All Projects → owenliang → task_schedule

owenliang / task_schedule

Licence: other
(C++)基于图数据结构与拓扑序列的任务调度demo

Programming Languages

C++
36643 projects - #6 most used programming language
go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to task schedule

Network traffic modeler py3
pyNTM - This is the network traffic modeler written in python 3: pip3 install pyNTM
Stars: ✭ 93 (+75.47%)
Mutual labels:  topology
Mockedstreams
Scala DSL for Unit-Testing Processing Topologies in Kafka Streams
Stars: ✭ 184 (+247.17%)
Mutual labels:  topology
Asistente-LADM-COL
Complemento para QGIS v3 que permite capturar, consultar, mantener, validar y exportar datos conformes con el modelo LADM-COL.
Stars: ✭ 22 (-58.49%)
Mutual labels:  topology
React Network Diagrams
Contains ESnet network mapping and circuit rendering code, as used in the ESnet portal.
Stars: ✭ 138 (+160.38%)
Mutual labels:  topology
Topocm content
Course on topology in condensed matter
Stars: ✭ 161 (+203.77%)
Mutual labels:  topology
Topology
A diagram (topology, UML) framework uses canvas and typescript. 一个轻量(100k左右)、功能丰富的绘图工具(微服务架构图、拓扑图、流程图、类图等UML图、脑图,动画、视频支持)。 【在线使用】:
Stars: ✭ 3,270 (+6069.81%)
Mutual labels:  topology
Mogutda
Topological Data Analysis in Python: Simplicial Complex
Stars: ✭ 77 (+45.28%)
Mutual labels:  topology
qtopology
Distributed stream processing layer
Stars: ✭ 20 (-62.26%)
Mutual labels:  topology
Swiftymath
Pure Math in Pure Swift.
Stars: ✭ 182 (+243.4%)
Mutual labels:  topology
findpeaks
The detection of peaks and valleys in a 1d-vector or 2d-array (image)
Stars: ✭ 121 (+128.3%)
Mutual labels:  topology
Ripser.py
A Lean Persistent Homology Library for Python
Stars: ✭ 139 (+162.26%)
Mutual labels:  topology
Pytda
Topological Data Analysis in Python
Stars: ✭ 156 (+194.34%)
Mutual labels:  topology
persim
Distances and representations of persistence diagrams
Stars: ✭ 98 (+84.91%)
Mutual labels:  topology
Linchpin
ansible based multicloud orchestrator
Stars: ✭ 107 (+101.89%)
Mutual labels:  topology
RamaNet
Preforms De novo protein design using machine learning and PyRosetta to generate a novel protein structure
Stars: ✭ 41 (-22.64%)
Mutual labels:  topology
Plexus
Polygonal mesh processing.
Stars: ✭ 90 (+69.81%)
Mutual labels:  topology
Jtopo topology
基于 jtopo 二次封装,拓扑图编辑器
Stars: ✭ 197 (+271.7%)
Mutual labels:  topology
SkeletonMatching
This repository implements skeleton matching algorithm.
Stars: ✭ 30 (-43.4%)
Mutual labels:  topology
data
A community database of topological counterexamples
Stars: ✭ 42 (-20.75%)
Mutual labels:  topology
topology
拓扑图组件
Stars: ✭ 29 (-45.28%)
Mutual labels:  topology

task_schedule

项目介绍

基于DAG图的调度DEMO,基于图数据结构与拓扑序列理论,实现一个任务调度工具。

功能

当前是一个命令行工具,通过JSON文件配置任务依赖关系,即可由工具完成调度。

现阶段只是一个DEMO, 有时间会把调度结果作为JSON输出, 并且利用工具的进程退出码作为调度成功与否的标识, 方便使用.

配置


{
  "maxParallel": 5,
  "graph": {
    "myGraph": {
      "task": [
        {
          "name": "createFile",
          "cmd": "touch /tmp/my_file",
          "retry": 2
        },
        {
          "name": "appendFile",
          "cmd": "echo hello >> /tmp/my_file",
          "deps": ["createFile"]
        }
      ]
    }
  }
}

运行与日志


./scheduler ./example.json

---------------
任务名:appendFile
SHELL命令:echo hello >> /tmp/my_file
最大重试次数0
是否完成:NO
(当前)依赖这些任务: createFile
(当前)被这些任务依赖:
任务名:createFile
SHELL命令:touch /tmp/my_file
最大重试次数2
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: appendFile
---------------
---------------
任务名:appendFile
SHELL命令:echo hello >> /tmp/my_file
最大重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:createFile
SHELL命令:touch /tmp/my_file
最大重试次数2
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: appendFile
---------------
---------------
任务名:appendFile
SHELL命令:echo hello >> /tmp/my_file
最大重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:createFile
SHELL命令:touch /tmp/my_file
最大重试次数2
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
---------------

原理展示

输入

    /*
     *  拓扑1
     *
     *          J  O  B 1
     *          /   \   \
     *        V      V    V
     *     JOB2    JOB3   JOB5
     *         \    /
     *         V   V
     *         JOB4
     */
     
     /** 
      * 拓扑2 
      *
      *      J  O  B  1
      *     /    |     \
      *    V    V      V
      *  JOB2 JOB3   JOB4  <- JOB5
      *
      */

输出


---------------
任务名:graph1-job1
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph1-job2  graph1-job3  graph1-job5 
(当前)被这些任务依赖:
任务名:graph1-job2
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph1-job4 
(当前)被这些任务依赖: graph1-job1 
任务名:graph1-job3
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph1-job4 
(当前)被这些任务依赖: graph1-job1 
任务名:graph1-job4
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job2  graph1-job3 
任务名:graph1-job5
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
---------------
---------------
任务名:graph2-job1
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph2-job2  graph2-job3  graph2-job4 
(当前)被这些任务依赖:
任务名:graph2-job2
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job3
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job4
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1  graph2-job5 
任务名:graph2-job5
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph2-job4 
(当前)被这些任务依赖:
---------------
---------------
任务名:graph2-job1
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph2-job3  graph2-job4 
(当前)被这些任务依赖:
任务名:graph2-job2
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job3
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job4
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1  graph2-job5 
任务名:graph2-job5
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph2-job4 
(当前)被这些任务依赖:
---------------
---------------
任务名:graph1-job1
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph1-job2  graph1-job3 
(当前)被这些任务依赖:
任务名:graph1-job2
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph1-job4 
(当前)被这些任务依赖: graph1-job1 
任务名:graph1-job3
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph1-job4 
(当前)被这些任务依赖: graph1-job1 
任务名:graph1-job4
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job2  graph1-job3 
任务名:graph1-job5
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
---------------
---------------
任务名:graph1-job1
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph1-job2  graph1-job3 
(当前)被这些任务依赖:
任务名:graph1-job2
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
任务名:graph1-job3
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
任务名:graph1-job4
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job2  graph1-job3 
任务名:graph1-job5
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
---------------
---------------
任务名:graph1-job1
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph1-job2 
(当前)被这些任务依赖:
任务名:graph1-job2
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
任务名:graph1-job3
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
任务名:graph1-job4
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job2 
任务名:graph1-job5
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
---------------
---------------
任务名:graph1-job1
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph1-job2
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
任务名:graph1-job3
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
任务名:graph1-job4
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph1-job5
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph1-job1 
---------------
---------------
任务名:graph2-job1
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph2-job4 
(当前)被这些任务依赖:
任务名:graph2-job2
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job3
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job4
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1  graph2-job5 
任务名:graph2-job5
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务: graph2-job4 
(当前)被这些任务依赖:
---------------
---------------
任务名:graph1-job1
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph1-job2
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph1-job3
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph1-job4
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph1-job5
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
---------------
---------------
任务名:graph2-job1
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph2-job2
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job3
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job4
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1  graph2-job5 
任务名:graph2-job5
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖:
---------------
---------------
任务名:graph2-job1
命令:sleep 2
重试次数0
是否完成:NO
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph2-job2
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job3
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job4
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖: graph2-job1 
任务名:graph2-job5
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
---------------
---------------
任务名:graph2-job1
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph2-job2
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph2-job3
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph2-job4
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
任务名:graph2-job5
命令:sleep 2
重试次数0
是否完成:YES
(当前)依赖这些任务:
(当前)被这些任务依赖:
---------------

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].