gpt4 book ai didi

python - 如何在部署到 Heroku 时中止 Celery 任务

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:18 25 4
gpt4 key购买 nike

当我的 django 应用程序的新版本部署到 heroku 时,worker 被迫重新启动。我有一些长时间运行的任务,应该在被杀死之前执行一些清理工作。

我已经尝试注册一个 worker_shutdown Hook ,但似乎并不是每个 Hook 都被调用。

我也试过Notify celery task of worker shutdown中的答案但我不清楚如何在此上下文中中止给定任务,因为调用 celery.task.control.active() 会引发异常(celery 不再运行)。

感谢您的帮助。

最佳答案

如果您控制部署,也许您可​​以运行执行 Control.broadcast 的脚本到自定义命令,您可以 register beforehand并且只有在收到所需的答复后(您必须实现该逻辑)您才能继续部署(或引发 TimeoutException)?

此外,celery 已经有一个 predefined command for shutdown我猜你可能会在你的实例或 worker 的子类中重载。命令的优点是可以传递一个 Panel 实例,它允许您访问 the consumer .那应该在那里公开很多控制...

关于python - 如何在部署到 Heroku 时中止 Celery 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717156/

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