我的平台经历了很多任务(每天几千个)。其中一些较长的任务因以下错误而失败:
Traceback (most recent call last):
File "/app/.heroku/python/lib/python2.7/site-packages/billiard/pool.py", line 1167, in mark_as_worker_lost
human_status(exitcode)),
WorkerLostError: Worker exited prematurely: exitcode 0.
根据Celery's Flower的说法,它没有提供任何比追踪回溯更多的东西,这项任务在开始前四分钟收到(2014-12-22 22:46:46.196814)(2014-12-22 22: 50:03.469647),仅在十秒内失败(纪元1419288613.34或2014-12-22 22:50:13)。
这是我平台上反复出现的问题。它发生主要是,其任务运行scrapy 0.24.2,但也可能与其他任务一起发生。
WorkerLostError的其他持续时间(退出代码为零)是三分钟,五分钟或七分钟。
有关可能导致此问题的任何想法?所有任务在本地运行完美。感谢。
答案 0 :(得分:7)
我的建议是检查您正在使用的所有模块以及“raise BaseException”的代码。我遇到了WorkerLostError exitcode 0的问题。
经过大量调试并特别确定任务失败的地方后,我发现是在引发BaseException的时候。发生了WorkerLostError,而不是提供错误消息。
通过更改为“raise Exception”,当任务内部出现问题时,会提供实际的错误消息。对于你的情况,这可能不一样,但这是我在处理相同错误时发现的。
答案 1 :(得分:1)
我也注意到了同样的错误:
[...ERROR/MainProcess] Task ... raised unexpected: WorkerLostError('Worker exited prematurely: exitcode 0.',)
Traceback (most recent call last):
File "/usr/local/lib/python3.5/site-packages/billiard/pool.py", line 1175, in mark_as_worker_lost
human_status(exitcode)),
billiard.exceptions.WorkerLostError: Worker exited prematurely: exitcode 0.
不仅包含BaseException
,还包含BaseException
子类的自定义异常。将基类更改为Exception
允许将实际异常与堆栈跟踪一起提升。
答案 2 :(得分:0)
对我来说,它sys.exit(0)
在任务中