如果工作线程初始化失败,停止芹菜应用程序的最佳方法是什么



我在worker_process_init信号中有一些逻辑:

@worker_process_init.connect
def init_per_worker_publisher(**kwargs):
# some init logic...

如果出现未处理的异常,setup函数失败,没有init发生,但worker应用程序继续运行,就像什么都没发生一样。

我这样解决了这个问题:

@worker_process_init.connect
def init_per_worker_publisher(**kwargs):
try:
# some init logic...
except Exception:
celery_app.control.shutdown()

也许有更好的解决方案?

可以引发WorkerShutdown异常。

from celery.exceptions import WorkerShutdown
@worker_process_init.connect
def init_per_worker_publisher(**kwargs):
try:
# some init logic...
except Exception:
raise WorkerShutdown()