我们的部署过程使用终止进程列表中的所有 celery 进程来重新启动 celery。
有时我会在芹菜原木中看到“工人丢失”。如果发生这种情况时任务正在运行,该任务会重新运行还是会丢失?我们正在使用redis。
我们的部署过程使用终止进程列表中的所有 celery 进程来重新启动 celery。
有时我会在芹菜原木中看到“工人丢失”。如果发生这种情况时任务正在运行,该任务会重新运行还是会丢失?我们正在使用redis。
基本上,您应该向每个 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
您可以将这些标志设置为 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