celery worker 经常卡死,例如 并发数 是 4,然后经常就有 4 个任务状态卡在 started 或者 received 不动,然后也不会抛出异常。我是设置了超时的 CELERYD_TASK_SOFT_TIME_LIMIT = 120
但是时间过了很久 也不会抛出 异常 SoftTimeLimitExceeded
我看文档是肯定会抛出的。但是这个有的时候能抛出,有的时候不会抛出,然后就卡死在那个地方! 整了一周了还是没找到问题
1
ohhe 2018-08-06 16:56:38 +08:00
什么版本
某些版本有这样的问题 |
2
WinMain 2018-08-07 08:41:58 +08:00
用的 redis ?
|
3
myyou 2018-08-07 10:10:45 +08:00
celery 的确会这样,内存占用会越来越多,然后就假死,建议写个检测脚本定时重启。
或者找一个替代品例如这个: https://github.com/Bogdanp/dramatiq |
6
myyou 2018-08-07 13:53:03 +08:00
@darksand 之前做的是每隔一段时间就检测 celery 所有进程内存占用,到一定量时不管假不假死都重启。你可以根据是否有日志输出来重启。
实际我还是建议你换这个 https://github.com/Bogdanp/dramatiq,celery 我一直怀疑它内存泄漏。 |
9
ohhe 2018-08-07 17:20:31 +08:00
try 4.1 或者 3.1
|
10
qq7171891 2018-10-16 08:53:38 +08:00
我也是。。我头都大了。。任何异常不抛出,同时使用 beat 和 worker,会发现 beat 很好,worker 会过几天突然莫名其妙的不执行了,Received task 都没有了,但是开了 Debug 模式,没有任何异常报告。
|
11
qq7171891 2018-10-16 08:54:55 +08:00
实在不成打算用 RQ 了。不好的地方就是首先要重新学习,其次 RQ 没有原生支持类似 beat 这样的计划任务模块,但有扩展包,别人写了一个。
|