django celery 显示错误 - 进程“ForkPoolWorker-1”pid:41 退出并显示“exitcode 70”

问题描述 投票:0回答:1

我的 django 中有一个 celery 计划任务,它在下午 4 点运行。该计划任务执行后,运行顺利,没有出现任何错误。昨天我的芹菜任务由于以下错误而失败了

Process "ForkPoolWorker-1" pid:41 
exited with "exitcode 70"
Task handler raised error: 
WorkerLostError('Worker exited 
prematurely: exitcode 70 Job: 1.')`

我不知道为什么会出现这个错误。我正在使用

Django==3.2.4
celery==5.1.2

还显示一些折旧警告

version 6.0.0. Use the accept_content 
instead
The 'CELERY_TIMEZONE' setting is 
deprecated and scheduled for removal 
in   alternative=f'Use the 
{_TO_NEW_KEY[setting]} instead')

任何人都可以帮我解决上述问题吗?我的芹菜任务不是一项长时间运行的任务。

python django celery
1个回答
0
投票

大多数工作错误的发生是因为您的系统达到了内存限制,并且您的作业需要的内存超过了机器上的可用内存。您可以尝试以下一些解决方案:

  1. 减少作业的内存使用量。
  2. max-tasks-per-child
    配置设置为 1 以在每次任务后释放内存。
  3. 如果您的作业需要大量内存,请减少 Worker 的并发数,以确保每个 Worker 专注于单个作业。

示例:

celery -A default worker  -l INFO --max-tasks-per-child=1 --concurrency=1 

https://docs.celeryq.dev/en/stable/userguide/workers.html#concurrency https://docs.celeryq.dev/en/stable/userguide/workers.html#max-tasks-per-child-setting

© www.soinside.com 2019 - 2024. All rights reserved.