Kev*_*yer 31 python exception-handling celery
Celery似乎没有正确处理异常.
如果我有任务:
def errorTest():
raise Exception()
Run Code Online (Sandbox Code Playgroud)
然后我打电话
r = errorTest.delay()
In [8]: r.result
In [9]: r.state
Out[9]: 'PENDING'
Run Code Online (Sandbox Code Playgroud)
它会无限期地挂起来.
去检查日志显示错误被抛出任务(如果你想要消息,请问),我知道后端和一切都设置正确,因为其他任务正常工作并正确返回结果.
在Celery中捕捉异常需要做些什么时髦吗?
/ Celery版本是3.0.13,经纪人是RabbitMQ在我的本地机器上运行
sed*_*nym 31
如果您在CELERY_ALWAYS_EAGER设置为True的情况下运行Celery,那么请确保在您的设置中也包含此行:
CELERY_EAGER_PROPAGATES_EXCEPTIONS = True
Run Code Online (Sandbox Code Playgroud)
http://docs.celeryproject.org/en/latest/configuration.html#celery-eager-propagates-exceptions
小智 13
您可以on_failure在Task子类中定义一个函数来正确处理它们.如果您只是想了解发生了什么,您可以设置错误电子邮件通知,它会在您的芹菜配置中向您发送堆栈跟踪.
注意:从v4开始,Celery 不再支持发送电子邮件.