出现问题时停止芹菜工人

  • 本文关键字:芹菜 问题 python celery
  • 更新时间 :
  • 英文 :


当出现问题时,如何从代码中停止芹菜?例如,Redis 或数据库已关闭。

例如,如果初始化函数出现异常,我可以停止连接

@stop_if_error
@signals.worker_process_init.connect
def init_method(*_, **_):
#some init code

但是,如果工人工作正在进行并且异常已经到来,如何停止呢?

您可以将 Celery 配置为仅在代理(如果我理解得很好的话,Redis (关闭时重试 N 次。关于你提到的数据库 - 我假设你的意思是结果后端?如果您这样做,则取决于您的用例。如果结果后端不起作用,这并不重要。

我们不做任何检查,而是确保代理和结果后端是高度可用的(例如 Redis 集群(。

迟到总比没有好。我希望这对你有帮助

import celery.exceptions
import celery.signals
# Your code...
@celery.signals.worker_init.connect
def worker_init(*_, **__) -> None:
try:
pass  # some init code
except Exception as e:
raise celery.exceptions.WorkerShutdown() from e
return None

相关内容

  • 没有找到相关文章

最新更新