早期我们使用 crontab
来执行定时任务, 后续考虑到定时任务变多, 并且服务也逐渐拆成了微服务, 上百个服务,其中有很多服务依赖定时任务(关于架构这块存在的问题,不做讨论
), 后基于 apscheduler
实现了一套 api , 还套了个单页应用,以供开发使用。
随着任务变多, 很多秒级任务执行, apscheduler
较不稳定。
值得一提的是, 在 jobstore 这块查询多了也偶有问题。
from apscheduler.executors.pool import ProcessPoolExecutor
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from apscheduler.schedulers.background import BackgroundScheduler
早期使用时有稍微走读下源码, 实际上对 apscheduler
的使用也不能算非常熟悉。 算是勉强造了个轮子吧。
想通过本帖知道各位同学是怎么管理定时任务的, 我在设计时是支持了几种方法, 如下:
然后支持一个 echo 的回调, 整体来讲, 比较简单,如果说有重使用这个的 也希望取个经, 看是否能解惑。
另外一个就是想知道有没有其他解决方案, 我看历史贴里面对这个的讨论比较少, 所以在此发一贴。
1
eslizn 2017-02-08 18:52:43 +08:00
管理设计一套用于控制的任务队列的接口就行了(任务执行还是要异步的来),包括执行状态结果的异步返回,也要设计个回调接口(可选)。
|
2
Sunyanzi 2017-02-08 19:35:41 +08:00
我最近在用 Redis 的 Keyspace Notifications ... 满足我的一切需求 ...
|
3
haozes 2017-02-08 20:10:03 +08:00 via iPhone
我用的是 minicron
|
4
jybox 2017-02-08 22:00:08 +08:00 1
必须 Paxos 呀 https://segmentfault.com/a/1190000007146045
|
5
hand515 2017-02-09 10:03:53 +08:00
用 java 的 Quartz 实现了一个 cron 任务管理。
|
6
lgpqdwjh OP |
7
zhangneww 2017-02-09 11:02:08 +08:00
Azkaban
|
8
Tianny 2017-02-09 23:45:18 +08:00
|