2015-07-27 2 views
4

У меня есть приложение Джанго с некоторыми задачами сельдерея, я смотрел рабочий снагрузочного задача сельдерея 3.1.18

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 

Я искал пост об этой ошибке, но я нашел только 3-х лет пост, который не помог мне на всех.

Я использую

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

Так как я успешно завершить уже запущенную задачу?

EDIT: Задача, однако, быть прекращено, но код прекращает выполнение из-за исключения, и как-то, кроме не ловить исключение

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

ответ

1

При создании задачи нужно указать исключение, которое будет сгенерировано внутри задачи

from billiard.exceptions import Terminated 

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

Я столкнулся с проблемой, связанной с сельдереем 3.1.25. Исключение выбрано из MainProcess, поэтому я не уверен, как повысить исключение из рабочего может решить эту проблему? – user2066671

 Смежные вопросы

  • Нет связанных вопросов^_^