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)
Потенциальное решение, которое я рассматривал, это копирование и вставка моего файла класса в мои задачи, чтобы я мог установить флаг внутри блоков кода, чтобы проверить, нужно ли его прервать или продолжить выполнение... но это кажется неуклюжим и интуитивно неправильным, но, возможно, я ошибаюсь.
Есть идеи, как я могу заставить эту задачу завершиться?