Обработка команды отзыва из внутренней задачи
Есть ли способ обрабатывать команды revoke
внутри логики задачи?
Поскольку я выполняю некоторые вычисления и манипуляции с базой данных в запущенных задачах, я хотел бы обработать запрос на отзыв пользователя, используя данные самой задачи.
Я уже пробовал перехватывать исключения celery.exceptions.Terminated
или celery.exceptions.WorkerTerminated
, но, похоже, это не работает так, как ожидалось.
from celery import shared_task, exceptions
@shared_task(
name="tasks.trigger_sales",
bind=True
)
def trigger_sales_job(self):
try:
logger.info('Executing task id {0.id}, args: {0.args!r} kwargs: {0.kwargs!r}'.format(self.request))
# Do some work on DB
return True
except (exceptions.Terminated, exceptions.WorkerTerminated) as e:
logger.warning(f"Task {self.request.id} has been terminated by user request.")