我们使用带有rabbitMQ后端的芹菜,我们的一些服务器挂起错误:“[Errno 113]无主机路由”(这可能是因为我们一半的服务器在美国,一半在欧洲)。
我需要确保每个任务都在交付,遗憾的是我不知道如何重试使用 send_task /字符串标识符发送的任务(发送任务的服务器无法访问远程工作者的代码) )像这样:
send_task("remote1.tasks.add_data", args=[...], kwargs={}, queue="remote1")
是否可以重试此类任务?
答案 0 :(得分:4)
sent_task只将消息发送给代理,如果在调用sent_task的服务器上引发异常,则消息可能根本没有到达代理,而是没有任务要重试但只是要处理的异常。 否则,如果所有工作人员随机提出此异常,因为他们因某些原因无法到达经纪人,可能您可以通过设置为真来解决芹菜配置
CELERY_ACKS_LATE = True
“延迟确认意味着任务消息将在执行任务后被确认,而不仅仅是之前,这是默认行为。” 这意味着如果在工作程序中执行任务期间出现问题,代理程序将不会收到确认,而另一名工作程序将执行该任务。