celery 经常卡死,求帮助

2018-08-06 16:39:43 +08:00
 darksand

celery worker 经常卡死,例如 并发数 是 4,然后经常就有 4 个任务状态卡在 started 或者 received 不动,然后也不会抛出异常。我是设置了超时的 CELERYD_TASK_SOFT_TIME_LIMIT = 120

但是时间过了很久 也不会抛出 异常 SoftTimeLimitExceeded

我看文档是肯定会抛出的。但是这个有的时候能抛出,有的时候不会抛出,然后就卡死在那个地方! 整了一周了还是没找到问题

5923 次点击
所在节点    Python
11 条回复
ohhe
2018-08-06 16:56:38 +08:00
什么版本
某些版本有这样的问题
WinMain
2018-08-07 08:41:58 +08:00
用的 redis ?
myyou
2018-08-07 10:10:45 +08:00
celery 的确会这样,内存占用会越来越多,然后就假死,建议写个检测脚本定时重启。
或者找一个替代品例如这个: https://github.com/Bogdanp/dramatiq
darksand
2018-08-07 11:09:14 +08:00
@WinMain rabbitmq
darksand
2018-08-07 11:11:21 +08:00
@myyou 如果用检测脚本定时重启的话,请问怎么检测到是否假死呢?
myyou
2018-08-07 13:53:03 +08:00
@darksand 之前做的是每隔一段时间就检测 celery 所有进程内存占用,到一定量时不管假不假死都重启。你可以根据是否有日志输出来重启。
实际我还是建议你换这个 https://github.com/Bogdanp/dramatiq,celery 我一直怀疑它内存泄漏。
darksand
2018-08-07 16:45:57 +08:00
@myyou 感谢
darksand
2018-08-07 16:46:43 +08:00
@ohhe 用的 4.2.0
ohhe
2018-08-07 17:20:31 +08:00
try 4.1 或者 3.1
qq7171891
2018-10-16 08:53:38 +08:00
我也是。。我头都大了。。任何异常不抛出,同时使用 beat 和 worker,会发现 beat 很好,worker 会过几天突然莫名其妙的不执行了,Received task 都没有了,但是开了 Debug 模式,没有任何异常报告。
qq7171891
2018-10-16 08:54:55 +08:00
实在不成打算用 RQ 了。不好的地方就是首先要重新学习,其次 RQ 没有原生支持类似 beat 这样的计划任务模块,但有扩展包,别人写了一个。

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

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

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

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

© 2021 V2EX