[调度]可视化的调度架构-Dagobah

Dagobah 简介

Dagobash 是用 python 编写的一个简单的基于依赖关系的作业调度器。 Dagobah 允许你使用 Cron 语法安排调度工作,你可以非常简单的通过 web 界面点击拖动来定义每个工作的一系列任务的依赖关系。

Dagobash 可以让你重试失败的单个任务,给你发送有用的工作任务成功和失败的报告,并且可以在多种后台持久化你的数据,这样你就不用担心你的数据丢失了。

github 项目地址:Dagobah
2f1kO

安装

我的基础环境:

  • mac os
  • Python 2.7
  • mongo 3.2.3

安装过程

pip install pymongo

dagobahd 安装

pip install dagobah

启动 dagobah

dagobah dagobah 的默认端口是 9000

在启动的时候,其会生成一个配置文件 ~/.dagobahd.yml

如果不想使用默认的端口和IP的话,可以修改配置文件

访问 Dagobah

在浏览器中输入 http://ip:port

以下截图借用官方的图片

登录

login

密码在配置文件中

添加 job

manager

在 job 下添加任务

687474703a2f2f692e696d6775722e636f6d2f6d5775516f70782e706e67

指定任务直接的依赖关系

687474703a2f2f692e696d6775722e636f6d2f753276447265322e706e67

这个点击任务的图片,然后拖动,就可以画出任务直接的关系了

 

给远程主机添加任务

687474703a2f2f692e696d6775722e636f6d2f33734e6a4a697a2e706e67

日志会汇总之后发送邮件给你

687474703a2f2f692e696d6775722e636f6d2f794e364c55555a2e706e67

源码安装 Dagobah

从 github 上获取源码

为了能配置远程的服务器,你需要配置 SSH config

官方的关于 SSH config 文档地址

加入以下信息

注: test2 是主机 192.168.0.1 的别名

配置 ssh 的免密,使用命令 ssh-keygenssh-copy-id,你懂的,详细过程就不介绍了

启动 dagobah

缺陷

  • 不能定义 job 和 job 之间的依赖关系
  • 不能定义 task 和 job 之间的依赖关系
  • task 和 task 依赖的话,如果中间的 task 失败,后续的 task 依然可以继续执行,其设计的原则是一个任务失败,不影响整体任务的执行,但是如果我是强依赖,这样就会有问题

优点

  • 可以shell与python交互,这个组合起来你可以做非常多的功能
  • 轻松定义前后关联,可视化操作,方便简单
  • 基于cron表达式,你可以想到的调度时间都可以轻松实现

 

另外:cron表达式

点赞
  1. sun说道:

    感谢博主分享, 有点类似airflow

    1. hi,I'm frank说道:

      airflow能做的更多,不过从简单的角度来看,这个也满方便的。

  2. 大鱼牛,我想问问这个是完全基于cron么,可以即时触发命令么?

    1. bruce说道:

      这个底层是用python写了一个cron的任务,可以触发命令

发表评论

电子邮件地址不会被公开。 必填项已用*标注