Celery: Task Revoke
taskの中断
revokeを使う
- async_resultにアクセス可能なら,async_result.revoke()
- idのみわかっているなら,celery.task.control.revoke()
worker.py
from celery import Celery import time import celeryconfig #app = Celery("tasks", backend="rpc", broker="amqp://guest@192.168.10.5") app = Celery("tasks") app.config_from_object(celeryconfig) @app.task def add(x, y): time.sleep(5) return x + y
task_caller.py
from sample_worker import add import time import celery # delay async_result = add.delay(4, 4) print async_result.id time.sleep(2) # revoke async_result.revoke(terminate=True) # otherwise, restart time.sleep(2) # delay2 async_result = add.delay(4, 4) print async_result.id time.sleep(2) # revoke2 celery.task.control.revoke(async_result.id, terminate=True) # otherwise, restart time.sleep(2)