WorkerLostError('工人过早退出:信号15(SIGTERM).')

 滞留童年车 发布于 2023-02-02 19:20

我最近开始在一个新的Django项目中使用芹菜.设置:

 -------------- celery@123 v3.1.7 (Cipater) 
---- **** -----  
--- * ***  * -- Linux-3.8.11-ec2-x86_64-with-debian-squeeze-sid 
-- * - **** ---  
- ** ---------- [config] 
- ** ---------- .> app:         nextlanding_api:0x1c23250 
- ** ---------- .> transport:   redis://rediscloud@123123 
- ** ---------- .> results:     djcelery.backends.database:DatabaseBackend 
- *** --- * --- .> concurrency: 4 (prefork) 
-- ******* ----  
--- ***** ----- [queues] 
 -------------- .> celery           exchange=celery(direct) key=celery 

software -> celery:3.1.7 (Cipater) kombu:3.0.8 py:2.7.4
            billiard:3.3.0.13 redis:2.9.0
platform -> system:Linux arch:64bit, ELF imp:CPython
loader   -> celery.loaders.app.AppLoader
settings -> transport:redis results:djcelery.backends.database:DatabaseBackend 

我正在调查一个问题,即eta 24小时以上的任务正在消失(我确保visibility_timeout > 24小时).当我热情地关闭工作人员时,日志语句显示几条消息被确认.例: Restoring 26 unacknowledged message(s).

但是,我预计会恢复大约50个未确认的消息.仔细观察我的日志,我看到:

[ERROR] celery.worker.job: Task myproj_task[xxx] raised unexpected: WorkerLostError('Worker exited prematurely: signal 15 (SIGTERM).',)
...
WorkerLostError: Worker exited prematurely: signal 15 (SIGTERM). 
Restoring 26 unacknowledged message(s). 
Process exited with status 0 

我见过其他人报告说OOM会杀死他们的进程.我在Heroku上,看不到R14代码.

最后一点上下文,我从我的任务中产生了新的进程.

我的问题是:WorkerLostError是我应该担心的吗?状态代码是15(SIGTERM)似乎没问题.如果此错误不正常,是否可能导致丢失ETA任务?

编辑

起初我以为物品正在消失但是在放入一些详细的日志之后,我可以看到任务已经发出但从未在redis中持续存在:

myproj_email_task was sent. task_id: b6ce2b97-d5b8-4850-9e43-9185426cd9f6

但是,查看redis中的任务,该任务b6ce2b97-d5b8-4850-9e43-9185426cd9f6不存在.

因此看起来任务不会消失,但要么根本没有发送,要么没有被放入unackedredis密钥.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有