django 如何取消(终止)celery 运行任务?已尝试使用“AsyncResult(task_id).revoke(terminate=True)",但不起作用

iqjalb3h  于 2023-07-01  发布在  Go
关注(0)|答案(1)|浏览(259)

在django项目中,我使用celery来运行异步任务。我想实现一个函数来取消正在运行的任务。
官方文档:撤销任务表示可以使用“revoke(terminate=True)”方法。我试过了,但不管用。以下是我尝试过的一些方法:

...
task = AsyncResult("1e8fb3f3-4253-4bec-b71a-665ba5d23004")
print(task.state)
'STARTED'
task.revoke(terminate=True)
print(task.state)
'STARTED'
app.control.revoke("1e8fb3f3-4253-4bec-b71a-665ba5d23004", terminate=True)
print(task.state)
'STARTED'

最后它仍然执行到完成。有人遇到过类似的问题吗?或者有其他方法可以满足我对celery 的需求吗?任何帮助将不胜感激!

nwwlzxa7

nwwlzxa71#

我在Celery=5.3.0中遇到了同样的问题,this answer帮助我解决了这个问题。它说你应该根据结果撤销任务,例如:

result = add.apply_async(args=[2, 2], countdown=120)
 result.revoke()

相关问题