Python - Отмена уже выполняющейся задачи с помощью Celery

Мне нужно отменить задачу, созданную celery.

Я не уверен на 100%, имеет ли это значение, но я использую amazon sqs в качестве брокера.

Я наткнулся на эту статью - Отмена уже выполняющейся задачи с помощью Celery?

Поскольку я вызываю задачу внутри моего представления django, я также пытаюсь отменить ее внутри моего представления django, что выглядит примерно так:

import myproj.tasks as tasks

#uncertain as to if apply_async would be any better in this situation...
task = tasks.mytask.delay(...)
#I don't have the luxery to do task.revoke()
taskid = task.task_id
tasks.app.control.revoke(taskid, terminate=True, signal="SIGKILL")

Я проверяю своего рабочего... и он не дает мне никаких указаний на то, что рабочий прекратил работу над задачей, и он все еще имеет столько же времени для фактического завершения задачи, сколько и для ее убийства (250 секунд)........, а затем "убитая задача" неуважительно возвращается через 250 секунд после ее завершения.

Еще кое-что, возможно, стоит упомянуть о том, что файл задачи импортирует класс, который я создал... так что в файле задачи я определил свою задачу с декоратором задачи над определением, тогда буквально она возвращает:

return myclass.myclass(**kwargs)

Потенциальное решение, которое я рассматривал, это копирование и вставка моего файла класса в мои задачи, чтобы я мог установить флаг внутри блоков кода, чтобы проверить, нужно ли его прервать или продолжить выполнение... но это кажется неуклюжим и интуитивно неправильным, но, возможно, я ошибаюсь.

Есть идеи, как я могу заставить эту задачу завершиться?

Вернуться на верх