Celery Beat 能生产定时任务,但是 Celery Worker 有时不执行是什么情况?

2020-06-29 14:58:03 +08:00
 zhoudaiyu
有个定时任务(Period Task)配的是每 1 小时跑一次,项目启动的前 3 次是能正常能跑的,但是第 4 次任务没有执行,第 5 次又正常跑了。看了一下 Beat 的日志任务确实产生了,但是从 Worker 日志和 Flower 上看,任务并没有执行,且从业务上看确实没有执行定时任务。Worker 日志里面看了一下也没有报错。我们的 Broker 是用的 Redis 3,这个项目的所有任务都放到同一个队列上,且其他任务执行是没问题的,只有这个任务有问题。此外,查了一下可以进 redis 用 LLEN celery 去看队列积压情况,但是并没有这个 key 。我们用的 celery 的版本是 3.1.26.post2,django-celery 的版本是 3.2.2 。大家有遇到过这个问题么?
2334 次点击
所在节点    Python
6 条回复
wd
2020-06-29 16:48:31 +08:00
beat 日志不会说是哪个 worker 跑的?我之前遇到过莫名其妙的 job 提交,后面查了好久才弄明白是跑测试用例的时候产生的。你这个是不是也是某人的电脑连到了这个集群消耗了这个任务?要用不同的 redis db
zhoudaiyu
2020-06-29 16:56:41 +08:00
@wd beat 日志中看不到哪个 worker 执行的(有可能是日志的 level 不够低),我确定没有人连上 redis 去生产 /消费任务
ShuoHui
2020-06-29 17:02:05 +08:00
纯新手想请教各位大佬一下用 celery 优势是什么……我最近也在写要做定时任务的,感觉 apscheduler 基本都能满足……
youngce
2020-06-29 17:15:28 +08:00
@ShuoHui #3 前两年早期研究过一段时间,apscheduler 对于我来说,它的分布式实现可能稍微麻烦一点,社区当时也没有好的解决方案。celery 就可以轻易实现分布式,而且使用多,该踩的坑大家也都踩过了。另一方面,apscheduler 确实轻而优雅,celery 也确实显得笨重了一些
ShuoHui
2020-06-29 17:16:33 +08:00
@youngce #4 感谢解答
zhoudaiyu
2020-06-29 18:31:43 +08:00
发现了一些线索,两个工程用了一套 redis 的同一个库,可能有冲突

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

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

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

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

© 2021 V2EX