任务调度 RuQi(如期)

要相信,一切所期盼的,都会如期而至

1 架构

高可用部署如期,ruqi1 和 ruqi2 均为 butterfly 应用,ruqi1 和 ruqi2 分别部署在两台不同的机器上

+---------------+        +---------------+
|    ruqi1      |        |     ruqi2     |
+------+--------+        +-------+-------+
       |                         |
       |                         |
       |                         |
  +----V-------------------------V---+
  |               MySQL              |
  +----------------------------------+

如期可提供定时、周期性执行 python/shell 脚本、发送 HTTP POST 请求、发布百川任务的功能

2 部署

2.1 建表

2.2 配置

2.2.1 <butterfly_project>/conf/servicer/db_ruqi.py

可以选择 `redirect://` 方式重定向到别的配置,若存在 db_ruqi 配置,则不会读取 conf/config.py 配置

2.2.2 <butterfly_project>/conf/config.py

2.3 应用

3 接口

3.1 调度任务接口

3.1.1 增加任务

周期任务

eg: 每 10s 向百川中添加一次 /demo_api/hello 的请求

延迟任务

eg: 任务 1 小时后再发起执行

例子,延时发起星桥任务

3.1.2 删除任务

POST /ruqi/job_remove

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Body

Name
Type
Description

job_id

string

job_id

Response

3.1.3 修改任务

POST

参数说明

3.1.4 暂停任务

POST

3.1.5 恢复暂停的任务

POST

3.1.6 job 列表

GET /ruqi/job_lis

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Params

Name
Type
Description

job_id

string

[可选] job id

job_name

string

[可选] job name

page_index

int

[可选] 页码,如不传,则返回全部数据

page_size

int

[可选] 默认值 15

Response

3.1.7 job 详情

GET /ruqi/job_show

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Params

Name
Type
Description

job_id

string

job id

Response

3.2 调度历史接口

3.2.1 调度历史列表

GET

参数说明

3.2.2 调度历史清理

POST /ruqi/job_history_clear

添加每天清理一次历史任务,默认保留 180 天,可以新增参数修改保留天数

python test_handler.py /ruqi/job_add_by_line "1d python test_handler.py /ruqi/job_history_clear"

3.3 调度引擎接口

3.3.1 调度器状态

GET /ruqi/scheduler_status

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Response

3.3.2 调度器唤醒

POST /ruqi/scheduler_wakeup

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Response

4 FAQ

4.1 MySQL URL 是无效地址

启动 butterfly 失败,<butterfly_project>/__stdout 日志里会有报错信息

4.2 MySQL URL 没有权限

启动 butterfly 成功,定时任务调度器会启动失败,<butterfly_project>/logs/err.log 会报 self._scheduler.start() 失败

5 最佳实践

Last updated