celery - 在celery中重试 'send_task'发送的任务

标签 celery

我们使用带有rabbitMQ后端的celery,我们的一些服务器挂起并出现错误:“[Errno 113]没有到主机的路由”(这可能是因为我们一半的服务器在美国,一半在欧洲)。

我需要确保每个任务都已交付,不幸的是我不知道如何重试使用 send_task/string 标识符发送的任务(发送任务的服务器无法访问远程工作人员的代码)像这样:

send_task("remote1.tasks.add_data", args=[...], kwargs={}, queue="remote1")

是否可以重试此类任务?

最佳答案

sent_task 仅将消息发送到代理,如果调用 send_task 的服务器上引发异常,则消息可能根本没有到达代理,因此没有要重试的任务,而只是要处理的异常。 否则,如果所有工作人员由于某种原因无法联系到代理而随机引发此异常,您可能可以通过将 celery conf vars 设置为 true 来解决

CELERY_ACKS_LATE = 真

“延迟确认意味着任务消息将在任务执行后确认,而不是之前,这是默认行为。” 这意味着,如果在工作程序中执行任务期间出现问题,代理将不会收到确认,而另一个工作程序将执行该任务。

关于celery - 在celery中重试 'send_task'发送的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6835708/

相关文章:

python - 如何使用 Celery 守护进程自动重新加载任务模块?

python - 使用来自 Celery tasks.py 的 Django Channels 向客户端发送消息

database - 如何在数据库中持久化 Celery 队列

python - 如何使用 django-celery 配置 TASK_SERIALIZER

django - celery - 需要优先运行的任务

另一个函数内部的 Flask Celery update_state

python - django- celery : TypeError: can only concatenate tuple (not "NoneType") to tuple

python - 如何使用 Celery 制作包含所有待处理任务的仪表板?

python - 在不暂停服务的情况下将新代码部署到生产 celery 集群中的可靠方法

python-3.x - 类型错误:在运行基本 add.delay(1,2) 测试时无法 pickle 内存 View 对象