用 while+time.sleep()做定时任务,和 contrab 启动定时任务,使用上有什么差别吗?

2018-11-27 16:45:40 +08:00
 liudaqi
要创建一个每隔 2 小时运行一次的数据库清理任务,用 while 和 contrab 启动这样的任务,有什么差别吗?推荐用哪个方式比较好?
3050 次点击
所在节点    Python
10 条回复
Outliver0
2018-11-27 16:52:26 +08:00
while 是 python 程序在执行任务,contrab 是托管到操作系统,推荐第二个,具体看实际
xia0pia0
2018-11-27 17:15:12 +08:00
推荐是第二个,一般来说系统不挂的话,crontab 的稳定性还是挺可靠的。
aaa5838769
2018-11-27 17:18:07 +08:00
推荐第二个
holajamc
2018-11-27 17:28:54 +08:00
37Y37
2018-11-27 17:42:22 +08:00
virusdefender
2018-11-27 17:47:43 +08:00
单个简单任务的话,crontab 足够了,复杂任务我用 apscheduler,如果每个任务都开单独进程的话,有些浪费
iConnect
2018-11-27 20:04:31 +08:00
推荐 APScheduler 简单好用
rrfeng
2018-11-27 20:25:33 +08:00
1. sleep 并不精确,时间差累积你懂的
2. 执行任务的时间,你 sleep 了吗?要开另一个线程吗?
xpresslink
2018-11-28 10:08:48 +08:00
从可靠性来说肯定 cronjob 要好,但是有系统依赖。
你自己写的进程要弄成守护进程才行不然总担心挂掉。
lolizeppelin
2018-11-28 16:34:39 +08:00
看你内容...如果你循环内容需要复杂的上下文那就靠守护进程 sleep, 精准问题可以通过调用系统时间定期补偿

计划任务里的常见的数据库定期脚本注意通过 linux 文件锁来避免重复执行即可

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

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

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

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

© 2021 V2EX