GithubHelp home page GithubHelp logo

mitallast / taskflow Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 1.0 232 KB

Taskflow is modern scheduler for directed acyclic graph tasks

Java 86.47% HTML 5.15% CSS 0.65% JavaScript 7.57% Shell 0.16%
docker task-flow infrastructure aws

taskflow's Introduction

Taskflow

CircleCI

Taskflow is a service to declarative define, schedule and monitor workflows, presented as DAGs.

Get started with Docker

Last version of service already contains on docker hub

Just use docker-compose.yml:

docker-compose up

Open in browser http://localhost:8080

Database

Taskflow requires database for persist DAG's, as default it's a postgresql server. You can add your jdbc driver and override settings.

Configuration

See reference.conf for it. This is a typesafehub/config Hocon format

Main entities

Operations

Operation is a abstract parametrised unit of work - as example, abstract bash command.

Each operation defines reference configuration.

Operation can be executed with specified config and environment variables.

Tasks

Task is parametrised operation - as example, bash command with specified config and environment.

Each task can define it's dependencies, retry policy, monitoring etc.

DAG

DAG - Directed acyclic graph - is a task workflow definition. Each graph contains set of tasks, with defined dependencies between tasks.

Each dag is immutable and versioned - you cannot edit it, instead you create copy with new version - it's required for stable, repeatable runs. Tasks in DAG also immutable and versioned. As bonus, you have history of all DAG updates and you can simply determine wich version of DAG/task was used in concrete run of one.

As example, you have set of tasks [A, B, C, D, E]. You can create DAG like this:

                    +--------+
                    | task A |
                    +--------+
                     |      |
                     V      V
                +--------+ +--------+
                | task B | | task C |
                +--------+ +--------+
                     |      |
                     V      |
                +--------+  |
                | task D |  |
                +--------+  |
                     |      |
                     V      V
                   +----------+
                   | task D   |
                   +----------+

DAG run

DAG execution represented as DAG run. like the first, is also DAG of Task tun DAG run and task run has lifecycle:

  • PENDING
  • RUNNING
  • SUCCESS
  • FAILED
  • CANCELED

Taskflow guarantee at least one strategy for successful task run, or mark run as failed. If concrete task run failed, scheduler checks it's retry strategy and retry it. If retry strategy decides to stop retry task, it marks as failed, dag run stop pending and running tasks, dag run will be marked as failed.

You can cancel dag run. If there's a running tasks, it's execution will be interrupted, pending tasks will be canceled.

taskflow's People

Contributors

mitallast avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

yubobo

taskflow's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.