
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 这样的计划任务模块,但有扩展包,别人写了一个。 |