关于定时任务管理

2017-02-08 18:38:57 +08:00
 lgpqdwjh

描述

早期我们使用 crontab 来执行定时任务, 后续考虑到定时任务变多, 并且服务也逐渐拆成了微服务, 上百个服务,其中有很多服务依赖定时任务(关于架构这块存在的问题,不做讨论), 后基于 apscheduler 实现了一套 api , 还套了个单页应用,以供开发使用。

问题

随着任务变多, 很多秒级任务执行, apscheduler 较不稳定。

值得一提的是, 在 jobstore 这块查询多了也偶有问题。

from apscheduler.executors.pool import ProcessPoolExecutor
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from apscheduler.schedulers.background import BackgroundScheduler

早期使用时有稍微走读下源码, 实际上对 apscheduler 的使用也不能算非常熟悉。 算是勉强造了个轮子吧。

期望

想通过本帖知道各位同学是怎么管理定时任务的, 我在设计时是支持了几种方法, 如下:

  1. 命令执行(hcmd)
  2. http get(hget)
  3. http post(hpost)

然后支持一个 echo 的回调, 整体来讲, 比较简单,如果说有重使用这个的 也希望取个经, 看是否能解惑。

另外一个就是想知道有没有其他解决方案, 我看历史贴里面对这个的讨论比较少, 所以在此发一贴。

3253 次点击
所在节点    程序员
8 条回复
eslizn
2017-02-08 18:52:43 +08:00
管理设计一套用于控制的任务队列的接口就行了(任务执行还是要异步的来),包括执行状态结果的异步返回,也要设计个回调接口(可选)。
Sunyanzi
2017-02-08 19:35:41 +08:00
我最近在用 Redis 的 Keyspace Notifications ... 满足我的一切需求 ...
haozes
2017-02-08 20:10:03 +08:00
我用的是 minicron
jybox
2017-02-08 22:00:08 +08:00
hand515
2017-02-09 10:03:53 +08:00
用 java 的 Quartz 实现了一个 cron 任务管理。
lgpqdwjh
2017-02-09 10:06:22 +08:00
@eslizn 谢谢, 不知可有借鉴的项目呢

@Sunyanzi 我看看,谢谢

@haozes 嗯, 这个我到是有看到

@jybox 我看一下

@hand515 鄙人运维, 不熟悉 java , 即便一开始就知道 quartz 也未尝试。


昨晚发完贴后, 有事儿后来没能跟进本帖, 抱歉。
zhangneww
2017-02-09 11:02:08 +08:00
Azkaban
Tianny
2017-02-09 23:45:18 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/339077

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX