礼貌工作人员重启后,芹菜任务最终处于不一致状态

时间:2017-11-15 14:59:46

标签: celery django-celery

我的服务器上有芹菜服务。我从celery multi start...开始,然后停在celery multi stopwait...。这工作正常,当调用stopwait时,它等待所有工作人员完成他们的任务,然后退出。

我使用start标记呼叫stopwait-E,并使用django_celery_monitor来监控任务:

celery events -A myapp --camera django_celery_monitor.camera.Camera --frequency=2.0

这也有效,我将事件状态记录到数据库中,并正确更新任务。

但是当我使用stopwait来阻止工作人员时会出现问题。如果某个任务正在运行,那么该任务将永远保持在STARTED状态,即使它已经完成,我猜测是因为事件已经发出,但是由于工作人员事后立即关闭它会丢失。永远不会收到更新后的状态,我不能自己覆盖它们,因为Camera类在运行时会将错误状态写回顶部。

我甚至尝试过使用回调而不是提供的Camera类进行实时处理。在工人终止之前,仍未从最终任务收到成功的任务事件。

如何解决这个问题?我的后端是RabbitMQ。 Celery版本是4.1.0。

0 个答案:

没有答案