【发布时间】:2021-11-03 16:36:50
【问题描述】:
我刚刚从 ForkPool 切换到 gevent,并发 (5) 作为在 Kubernetes pod 中运行的 Celery 工作人员的池方法。切换后,我在工作人员中遇到了不可恢复的错误:
amqp.exceptions.PreconditionFailed: (0, 0): (406) PRECONDITION_FAILED - delivery acknowledgement on channel 1 timed out. Timeout value used: 1800000 ms. This timeout value can be configured, see consumers doc guide to learn more
代理日志给出的信息基本相同:
2021-11-01 22:26:17.251 [warning] <0.18574.1> Consumer None4 on channel 1 has timed out waiting for delivery acknowledgement. Timeout used: 1800000 ms. This timeout value can be configured, see consumers doc guide to learn more
我已设置CELERY_ACK_LATE,但不熟悉为确认期设置超时的必要性。这在使用流程之前从未发生过。任务可能会相当长(有时 60-120 秒),但我找不到特定的设置来允许它。
我在其他论坛的另一篇文章中读到一个用户将代理配置的超时设置为一个巨大的数字(比如 24 小时),并且也遇到了同样的问题,所以这让我觉得可能有问题其他与问题相关的内容。
关于如何让员工更有弹性的任何想法或建议?
【问题讨论】:
标签: kubernetes rabbitmq celery