KZKY memo

自分用メモ.

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)