有什么方法可以"取消撤销"使用Celery的任务?我需要能够手动重新启动以前撤销的任务。如果不能直接实现,有没有办法复制撤销的任务并启动一个具有完全相同参数的新任务?
这是一个小例子:
app = Celery('tests', broker='redis://localhost:6379/0')
app.conf.update(
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0',
CELERY_TASK_SERIALIZER='json',
CELERY_ACCEPT_CONTENT=['json'],
CELERY_RESULT_SERIALIZER='json',
)
@app.task
def add(x, y):
return x + y
task = add.delay(1, 2)
task.revoke(terminate=True)
# ...
# Something happens here and now I need to actually launch the revoked task.
# I'd need something like...
task.restart() # How can I do this?
答案 0 :(得分:0)
delay
会返回AsyncResult
个实例,该实例不知道您的任务是如何启动的。
您可以尝试保留任务的签名,然后重新启动它。
sig = add.s(1, 2)
task = sig.apply_async()
task.revoke(terminate=True)
# ...
task = sig.apply_async() # Will relaunch a task with the same parameters.