gpt4 book ai didi

celery - 重新部署时如何避免中断正在运行的 Celery 任务?

转载 作者:行者123 更新时间:2023-12-04 10:52:53 26 4
gpt4 key购买 nike

我有一个应用程序,其中包含 celery worker 。当我部署这将杀死那些正在运行的进程。

所以任务将开始,但永远不会完成,并且在部署完成时不会重新启动。

避免此问题并在部署完成后重新启动这些任务的最佳方法是什么?

是在我的所有任务上使用 acks_late 吗?还是另一种方式?

@celery.task(acks_late=True)
def my_task():
pass

最佳答案

作为部署过程的一部分,我们所做的是在我们即将部署新代码时向集群中的所有 Celery 工作人员发送关闭信号。发送信号后,我们开始部署,一旦部署成功完成,我们就有一组新的工作人员订阅了一组预定义的队列。

由旧的 Celery 工作进程创建的工作进程可能会继续运行接下来的几个小时(甚至几天!),但是当他们从所有队列中取消订阅的关闭信号时,它们将不会运行任何新计划的任务。

如您所见,此过程不涉及撤销和重新调度任务,因为这将是一个复杂得多的过程,因为有时我们会在数百个 Celery 节点上同时运行数千个任务......

关于celery - 重新部署时如何避免中断正在运行的 Celery 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59381704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com