我正在使用Celery来并行执行调用第三方API的Python函数。
此API强制要求在每次调用之间等待至少3秒。
有没有一种方法可以指定一个消息代理(RabbitMQ或Redis(来尊重每个工作调用之间的延迟?
在Celery中,您可以使用倒计时方法。看见https://docs.celeryproject.org/en/stable/userguide/calling.html#eta-和倒计时
RabbitMQ有几个不同的选项来支持延迟消息,包括延迟消息交换插件和死字。不幸的是,Celery不支持这两种方法。相反,它所做的是延迟消息的执行,直到达到倒计时时间。消息本身会立即发送给工作者。
将签出https://docs.celeryproject.org/en/stable/userguide/tasks.html#retrying
将重试延迟指定为3秒,您可以将重试次数限制为X,作为任务定义的一部分,如文档中所示。