当连接失败,Celery会自动重试发送消息,我们可以对重试行为进行设置,譬如说多久重试一次、最大重试次数或者干脆不重试!
当然这只是官方文档说的,我在Windows上进行测试,故意设置了局域网中没有使用的ip地址作为broker的地址,本来以为会像文档中讲的那样,在重试3次后返回并提示错误,结果死活不返回;查看配置文档,找了各种配置项进行修改,都是这样,后来在Linux下面运行就正常了!感觉Celery在Windows下运行真的好多坑啊!
from celery import Celery
app = Celery('tasks',
backend='amqp://agent:agent@*.*.*.*:5672',
broker='amqp://agent:agent@*.*.*.*:5672')
app.conf.update(broker_connection_timeout=4.0, broker_connection_max_retries=3)
@app.task
def add(x, y):
return x + y
if __name__ == '__main__':
add.apply_async((2, 3), retry=True, retry_policy={
'max_retries': 3,
'interval_start': 0,
'interval_step': 0.2,
'interval_max': 0.2,
})</