在 celery 3.1.18 中终止任务

Terminating task in celery 3.1.18

我有一个带有一些 celery 任务的 django 应用程序,我正在盯着 worker

celery -A myapp worker --loglevel=INFO --concurrency=10

我 运行 使用 task.deploy() 执行任务,但是当我尝试使用 celery.task.control.revoke(task_id, terminate=True)

终止任务时

我得到

[2015-07-27 14:27:04,736: ERROR/MainProcess] Task task[80e06e87-f254-4c0b-bea5-5c21540777ab] raised unexpected: Terminated(15,)
Traceback (most recent call last):
  File "/home/blake/projects/venv/myapp/lib/python2.7/site-packages/billiard/pool.py", line 1674, in _set_terminated
    raise Terminated(-(signum or 0))
Terminated: 15

我一直在寻找 post 关于这个错误,但我只找到了 3 岁 post 根本没有帮助我。

我正在使用

celery==3.1.18
kombu==3.0.25
billiard==3.3.0.20

那么如何成功终止已经 运行ning 的任务?

编辑:然而,任务正在终止,但代码由于异常而停止执行,并且不知何故 except 没有捕获异常

try:
    revoke(task_id, terminate=True)
except Terminated:
    pass

创建任务时需要指定将在任务中抛出的异常

from billiard.exceptions import Terminated

@task(throws=(Terminated,))
def task():
   ...