【发布时间】:2015-09-23 15:16:00
【问题描述】:
我有一个带有 RabbitMQ 代理的 Celery 服务器。我用它在我的 Django 项目中运行后台任务。
在我的一个观点中,触发了一个信号,然后像这样调用一个 celery 任务:
create_something.delay(pk)
任务定义如下:
@task
def create_something(donation_pk):
# do something
一切都很好,但是:
如果在我调用任务时 RabbitMQ 已关闭,则在 create_something.delay(pk) 调用期间不会引发错误。但是视图抛出了这个错误:
[Errno 111] Connection refused
(堆栈跟踪有点没用,我认为这是因为使用了信号)
现在的问题是:我怎样才能防止这个错误?当 broker 宕机时,是否有可能重试 create_something.delay(pk)?
提前感谢您的任何提示!
【问题讨论】: