Celery-工人关闭后如何更新任务状态?

Ann*_*wan 6 python python-2.x celery python-2.7 celery-task

设定

芹菜3.0

经纪人= RabbitMQ

情境

任务已经被确认并开始处理,并且具有state=STARTED。然后,我想重新启动工作程序(以将工作程序更新为较新的版本)。重新启动worker(使用supervisorctl restart)后,那些长时间运行的任务将全部终止。但是他们的状态仍然在state=STARTED。如何将其状态更新为FAILURE其他值?(而且,我不希望在工作程序重新启动后再次执行这些任务。)

尝试过的方法(但不起作用)

  • 使用track_started=True---如果使用此选项,则state=STARTED在工作线程重新启动后,任务将保留在此处。如果没有此选项,则state=PENDING在工作程序重新启动后,任务将保留。
  • 使用CELERY_ACKS_LATE=True--- state=STARTED工作重新启动后,任务将保留在。并且再次执行任务,而不是期望的行为。
  • 使用signal(SIGTERM, handler)和处理程序函数来捕获信号。可以成功输入处理程序。但是,无论我将什么内容放入处理程序中,都无法更改任务的状态。状态保持不变,不会更改为FAILURE。在我尝试过的处理程序中
    • raise Exception
    • exit(0)
    • exit(1)

Celery是否有任何设置可以使其跟踪正在关闭的任务状态?

Tom*_*art 1

您需要撤销工作线程关闭时的任务。看一下这个问题的实际代码。