Как прервать задачу celery?

Простой пример
from celery import Celery

app = Celery('hello', broker='redis://localhost:6379/0')
id_task=''

@app.task(bind=True)
def testtask(self):
    id_task=str(self.request.id)
    while True:
        pass
    return 'ok'

def stoptask():
    ???? (task_id)

Пробовал так
from celery.contrib.abortable import AbortableAsyncResult

stop = AbortableAsyncResult(task_id)
stop.abort()

Ничего не происходит.
  • Вопрос задан
  • 863 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Flask
Седой и строгий
Во-первых, таск должен быть Abortable:
from celery.contrib.abortable import AbortableTask

@app.task(bind=True, base=AbortableTask)
def testtask(self):
    ...

Во-вторых, вместо while True: надо while not self.is_aborted():
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы