当发布者终止时,任务在芹菜 amqp 中徘徊



我正在使用CeleryRabbitMQ服务器。我有一个发布者,可能会被SIGKILL终止,并且由于无法监视此信号,因此我无法撤销任务。撤销发布者不再处于活动状态的任务的常见方法是什么?

我在工作线程端尝试了间隔,但发布者显然没有注册为工作线程,所以我不知道如何检测超时

芹菜没有内置任何东西来监控生产者/发布者的状态——只有工人/消费者状态。 您还可以考虑其他替代方法,例如,使用 redis 过期密钥,发布者必须定期更新该密钥,该密钥可以用作发布者是否处于活动状态的代理。 然后在任务中检查发布者的标志是否仍然存在于 redis 中,如果不存在,则任务返回不执行任何操作。

我很确定你想要的 Celery 是不可能的,所以我建议你改变你的逻辑并重新设计所有内容,成为 Celery 工作流程的一部分(或者几个 Celery 画布取决于实际用例(。我对 Celery 的经验是,您可以使用这些 Celery 原语和/或自定义 Celery 签名构建您能想象到的任何工作流程。

另一种适用于我的解决方案是仅在当前处理的任务完成后添加下一个任务。在这种情况下,队列不会填满。

最新更新