2

我们的部署过程使用终止进程列表中的所有 celery 进程来重新启动 celery。

有时我会在芹菜原木中看到“工人丢失”。如果发生这种情况时任务正在运行,该任务会重新运行还是会丢失?我们正在使用redis。

4

2 回答 2

3

基本上,您应该向每个 celery worker 发送 SIGTERM。http://docs.celeryproject.org/en/latest/userguide/workers.html#stopping-the-worker

如果你想杀死你的进程并重新启动任务,你可以设置设置 ACK_LATE,这将返回任务以查询工作人员是否无法成功完成任务并停止。 http://docs.celeryproject.org/en/latest/configuration.html?highlight=acks_late#celery-acks-late

于 2013-04-05T07:49:21.130 回答
0

您可以将这些标志设置为 true

  • CELERY_TASK_REJECT_ON_WORKER_LOST这负责将丢失的任务重新排队,因为突然退出
  • CELERY_ACKS_LATE
  • CELERY_ACKS_ON_FAILURE_OR_TIMEOUT(默认出现)

https://docs.celeryproject.org/en/stable/userguide/configuration.html#task-reject-on-worker-lost https://docs.celeryproject.org/en/stable/userguide/configuration.html#task -acks-late https://docs.celeryproject.org/en/stable/userguide/configuration.html#task-acks-on-failure-or-timeout

于 2021-12-17T13:06:17.593 回答