python – WorkerLostError(‘工人过早退出:信号15(SIGTERM).
我最近开始在一个新的Django项目中使用芹菜.设置:
我正在调查一个问题,即eta 24小时的任务正在消失(我确保visibility_timeout小时> 24小时).当我热情地关闭工作人员时,日志语句显示几条消息被确认.例: 但是,我预计会恢复大约50个未确认的消息.仔细观察我的日志,我看到:
我见过其他人报告说OOM会杀死他们的进程.我在Heroku上,没有看到R14代码. 最后一点上下文,我从我的任务中产生了新的进程. 我的问题是:WorkerLostError是我应该担心的吗?状态代码是15(SIGTERM)似乎没问题.如果此错误不正常,是否可能导致丢失ETA任务? 编辑 起初我以为物品正在消失但是在放入一些详细的日志之后,我可以看到任务已经发出但从未在redis中持续存在: myproj_email_task已发送. task_id:b6ce2b97-d5b8-4850-9e43-9185426cd9f6 但是,查看redis中的任务,任务b6ce2b97-d5b8-4850-9e43-9185426cd9f6不存在. 因此看起来任务不会消失,但要么根本没有发送,要么没有被放入未包装的redis密钥. 最佳答案
这些WorkerLostErrors的原因很可能是Celery和Heroku的行为不兼容:
> Celery工作者期望在父工作进程上使用SIGTERM,在这种情况下,它允许其子进程完成当前任务. 因此,所有工作程序子进程也会获得SIGTERM并立即开始终止,从而产生WorkerLostErrors. 已经为未发布的Celery 4.0:https://github.com/celery/celery/issues/2839准备了一个解决方法 我还没有找到3.1.19的解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |