Обработка команды отзыва из внутренней задачи

Есть ли способ обрабатывать команды 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.")
Вернуться на верх