前言
celery是一个分布式的任务调度模块,我们可以将一些耗时的操作提交给 Celery 去异步执行,同时还可以实现类似 crontab 定时任务功能。在本例中,客户使用的是 RabbitMQ 来作为消息中间件
问题描述
客户的消费者实例在执行任务过程中会异常退出,具体报错如下:
[2022-0308 11:03:38.403 ERROR/MainPorocess] unrecoverable error:Precondition Failed(406,'PRECONDITION_FAILED - delivery acknowledgement on channel 1 timed out. Timeout value used: 1800000 ms. This Timeout value can be configured, see consumers doc giude to learn more',(0,0),'')
问题分析
消息者实例运行时间超过 1800000 ms 没有返回 ACK 给 RabbitMQ,导致 RabbitMQ 将程序关闭。
解决方案
The timeout value is configurable in [rabbitmq.conf] (in milliseconds):
# one hour in milliseconds
consumer_timeout = 3600000
参考文档
[1] https://www.rabbitmq.com/consumers.html
如果您有其他问题,欢迎您联系火山引擎技术支持服务