Python 执行定时任务(cron)有什么好用的框架吗

2018-12-27 00:33:16 +08:00
 mrchi

目前想写一些定时任务挂在服务器上,主要大概有两类:

看了一些框架:

各位 v 友有什么建议吗?你们在项目中都是怎么做定时任务的?

7203 次点击
所在节点    程序员
32 条回复
jadec0der
2018-12-27 00:35:24 +08:00
crontab
mrchi
2018-12-27 00:38:04 +08:00
@jadec0der 我想写一套东西,以后添加新定时任务的时候直接扔代码和运行配置就好了,再就是能够出错重试,然后对结果啥的能进行查看,crontab 的结果就只能往日志里写了吧
Kylin30
2018-12-27 00:45:36 +08:00
while true
xiexingjia
2018-12-27 01:06:19 +08:00
huey
JasonYo
2018-12-27 01:07:17 +08:00
就 celery 吧?
Rebely
2018-12-27 01:18:23 +08:00
我觉得如果需求不是特别麻烦另类选一个简单的就好了😁
user919lx
2018-12-27 01:23:31 +08:00
我是做数据开发的,需要处理大量的定时任务,还有重重复杂的依赖关系。
很推荐用 Airflow,已经有非常多的公司在使用这个调度系统了,就调度这件事而言,我觉得它提供的功能已经非常全面了,足够满足你的需求。
如果觉得官方文档比较难懂,可以参考我写的几篇博客,http://longfei.leanote.com/cate/bigdata 不过我这几篇都是概念和使用方法。如果你要想了解如何安装部署,要么看官方文档,要么就搜一下网络上的教程。
user919lx
2018-12-27 01:31:00 +08:00
按照你的需求, 部署 Airflow 配置个 LocalExecutor 就足够满足了。

1. 写一套东西,以后添加新定时任务的时候直接扔代码和运行配置
Airflow 的任务是用 Python 写的,你完全可以写成动态的形式,可以通过读取数据库或者 csv 文件来动态生成定时任务,事实上我在实践中经常这么用。

2. 能够出错重试,然后对结果啥的能进行查看
Airflow 提供 Web UI 界面,可以查看每个周期下的 task 的运行状态,还有完整的信息(执行时间、重试次数、运行日志等等),出错自动重试,可以发送邮件,并且有按钮能让你重试任务,连 ssh 登陆服务器都不需要。
smallgoogle
2018-12-27 04:42:28 +08:00
你这个直接就循环延时就行了。不需要用到啥定时器这些。
另外的定时任务。我写了一个。不知道合不合适你。我也是搞了好久。
fonlan
2018-12-27 07:48:11 +08:00
直接装个 jenkins 不就行了,So easy
zmj1316
2018-12-27 07:58:54 +08:00
Jenkins +1 log 也够用 配置也方便
aniua
2018-12-27 09:06:56 +08:00
一个简单的方法:写个 Infinite loop,检查 Localtime,匹配上就执行动作。
claymore94
2018-12-27 09:12:48 +08:00
threading.Timer, 做一个递归调用函数
sunnyadamm
2018-12-27 09:17:17 +08:00
Python 内循环,服务器 nohup
ooeyunarika
2018-12-27 09:22:46 +08:00
lz 举例的这些框架是分布式定时任务的,如果只是执行 lz 这些需求,没啥必要

内循环,python3 可以上 asyncio,或者直接用 crontab 就好了
rookiebulls
2018-12-27 09:28:02 +08:00
推荐 apscheduler,简单好用
Alfons
2018-12-27 09:30:17 +08:00
sujin190
2018-12-27 09:44:41 +08:00
https://github.com/snower/forsun

推荐下之前写的工具,系统定时器秒级定时,长时间运行无误差,支持 thrift 接口和 http 接口添加定时任务,redis 持久化任务,轻松管理千万级别定时任务处理,支持到期执行 shell、http、mysql、redis 等操作,也可以自己编写扩展添加执行器
matrix1010
2018-12-27 09:46:45 +08:00
其实 AWS lambda 和阿里云的函数都支持 cron, 每个月有免费额度,还有统计,报警等各种功能
meiyoumingzi6
2018-12-27 09:49:06 +08:00
罗小黑更新事件,几个月去轮询一次就好了🙃


可以试试这个
https://apscheduler.readthedocs.io/en/latest/

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

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

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

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

© 2021 V2EX