• Stars
    star
    755
  • Rank 60,125 (Top 2 %)
  • Language
    CSS
  • License
    Do What The F*ck ...
  • Created over 11 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Simple DAG-based job scheduler in Python

Dagobah

Build Status PyPi version

Dagobah is a simple dependency-based job scheduler written in Python. Dagobah allows you to schedule periodic jobs using Cron syntax. Each job then kicks off a series of tasks (subprocesses) in an order defined by a dependency graph you can easily draw with click-and-drag in the web interface.

Dagobah lets you retry individual tasks from failure, sends you helpful email reports on job completion and failure, keeps track of your tasks' stdout and stderr, and persists its information in various backends so you don't have to worry about losing your data.

You can also [use Dagobah directly in Python.](../../wiki/Using Dagobah Directly in Python)

Installation

Dagobah works with Python 2.6 or 2.7.

pip install dagobah
dagobahd  # start the web interface on localhost:9000

On first start, dagobahd will create a config file at ~/.dagobahd.yml. You'll probably want to check that out to get your backend and email options set up before you start using Dagobah.

Dagobah does not require a backend, but unless you specify one, your jobs and tasks will be lost when the daemon exits. Each backend requires its own set of drivers. Once you've installed the drivers, you then need to specify any backend-specific options in the config. See the config file for details.

Available Backends

To use a backend, you need to install the drivers using the commands below and then tell Dagobah to use the backend in the config file (default location ~/.dagobahd.yml).

MongoDB

pip install pymongo

Deprecated Backends

  • SQLite: Deprecated following version 0.3.1.

Features

Single-user auth

Manage multiple jobs scheduled with Cron syntax. Run times are shown in your local timezone.

Tasks can be anything you'd normally run at a shell prompt. Pipe and redirect your heart out.

Failed tasks don't break your entire job. Once you fix the task, the job picks up from where it left off.

On completion and failure, Dagobah sends you an email summary of the executed job (just set it up in the config file).

Tasks can even be run on remote machines (using your SSH config)

Contributors

Get Started Contributing

  • See the fledgling wiki or create a new issue to get started
  • If you have any questions, go ahead and email or tweet at me, or go ahead and create a new issue in this repository.

More Repositories

1

github-selfies

Everything is better with selfies. Yes, even pull requests. Trust me.
JavaScript
1,138
star
2

py-dag

Python implementation of directed acyclic graph
Python
116
star
3

korhal

SC:BW Terran AI using JNIBWAPI and Clojure
Scheme
109
star
4

soundcloud.el

SoundCloud frontend for Emacs powered by emms
Emacs Lisp
33
star
5

exa-rs

libretro core for the TEC Redshift featured in EXAPUNKS by Zachtronics
Rust
15
star
6

better-search

Search results with more context in their own tab for VS Code
TypeScript
13
star
7

tarrasch

A Chess bot for Slack with graphical boards, win tracking, and automated analysis
Python
9
star
8

nsq-clojure

NSQ client using core.async
Clojure
7
star
9

sandbox-in-docker

Free your sandbox using Docker
Clojure
6
star
10

clojure-zulip

Unofficial Clojure bindings to Zulip using core.async
Clojure
4
star
11

korhal-starter

Korhal Starter Kit
C++
4
star
12

lazubot

A spin-off of flatland/lazybot for Zulip
Clojure
3
star
13

rvb

Cooperative routines in a competitive environment
JavaScript
2
star
14

mongo_commander

Get a realtime view of your Mongo cluster's stats using ncurses
Python
2
star
15

gcdb

The Worst Idea Ever
Go
1
star
16

async-anything

Easily use core.async with blocking APIs
Clojure
1
star
17

arduino-projects

JavaScript
1
star
18

snake-node

JavaScript
1
star
19

ggtracker-python

API Client for ggtracker.com
Python
1
star
20

asteroids

Let's try to write Asteroids from scratch in JS for fun
JavaScript
1
star
21

ColorBox

A first attempt at making an iOS app that does anything at all
Objective-C
1
star
22

open-source-sweeps

The Open Source Cryptocoin Sweepstakes
JavaScript
1
star
23

steam-automigrate

Automatically move Steam games between SSDs and HDDs based on last play time
Go
1
star