Задать вопрос

Как прервать задачу 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()

Ничего не происходит.
  • Вопрос задан
  • 1226 просмотров
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
Решения вопроса 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():
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы