Python中文
首页
教程
问答
标签
搜索
登录
注册
WorkerLostError('工作进程过早退出:信号15(SIGTERM)。',)
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我最近开始在一个新的Django项目中使用芹菜。设置:</p> <pre><code> -------------- 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 </code></pre> <p>我正在调查一个问题,即eta为24小时以上的任务正在消失(我已经确保了<a href="http://www.google.com/url?q=http%3A%2F%2Fdocs.celeryproject.org%2Fen%2Flatest%2Fgetting-started%2Fbrokers%2Fredis.html%23visibility-timeout&sa=D&sntz=1&usg=AFQjCNEzmB6ksRrOi4OwE5pyNfO9SH3O6w" rel="noreferrer">visibility_timeout</a>is>;24小时)。当我热情地关闭这个工人时,日志语句显示了几个被确认的消息。例子: <code>Restoring 26 unacknowledged message(s).</code></p> <p>但是,我希望恢复大约50条未确认的消息。仔细观察我的日志,我发现:</p> <pre><code>[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 </code></pre> <p>我见过其他人报告OOM杀死了他们的进程。我在Heroku上,没有看到<a href="https://www.google.com/url?q=https%3A%2F%2Fdevcenter.heroku.com%2Farticles%2Ferror-codes%23r14-memory-quota-exceeded&sa=D&sntz=1&usg=AFQjCNFeBZ2Q6kn_OX9YtudNjf_c4oUeVA" rel="noreferrer">R14</a>代码。</p> <p>最后一点,我正在从我的任务中产生新的进程。</p> <p>我的问题是:工作失误是我应该担心的吗?状态代码是15(SIGTERM),看起来正常。如果此错误不正常,是否可能导致ETA任务丢失?</p> <p><strong>编辑</strong></p> <p>起初我以为项目会消失,但在放入一些详细的日志后,我可以看到任务已经发出,但从未在redis中持久化:</p> <p><code>myproj_email_task was sent. task_id: b6ce2b97-d5b8-4850-9e43-9185426cd9f6</code></p> <p>但是,查看redis中的任务时,任务<code>b6ce2b97-d5b8-4850-9e43-9185426cd9f6</code>不存在。</p> <p>因此,任务似乎没有消失,但要么根本没有发送,要么没有放入<code>unacked</code>redis密钥。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p><code>SIGTERM</code>上的WorkerLost绝对不正常。在这种情况下,如何能够在不丢失任务的情况下重新启动进程?即使是<code>ack_late</code>选项也没有帮助。</p> <p>我认为不要在<code>SIGTERM</code>上丢失任务的愿望远非妄想。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
2 回答
无法使用Django\u mssql\u后端迁移到外部hos
4 回答
无法使用Django&Python3.4连接到MySql
10 回答
无法使用Django+nginx上载媒体文件
1 回答
无法使用Django1.6导入名称模式
8 回答
无法使用Django1.7和mongodb登录管理站点
5 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
10 回答
无法使用Djangockedi验证CBV中的字段
8 回答
无法使用Djangocketditor上载图像(错误400)
9 回答
无法使用Djangocron进行函数调用
8 回答
无法使用Djangofiler djang上载文件
9 回答
无法使用Djangokronos
5 回答
无法使用Djangomssql provid
5 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
9 回答
无法使用Djangomssq迁移Django数据库
10 回答
无法使用Djangonox创建用户
2 回答
无法使用Djangopyodb从Django查询SQL Server
6 回答
无法使用Djangopython3ldap连接到ldap
8 回答
无法使用Djangoredis连接到redis
3 回答
无法使用Django中的FK创建新表
2 回答