在 django 中中止 Celery 中正在运行的任务
我希望能够中止从 Celery 队列运行的任务(使用rabbitMQ)。我使用 AsyncBoot 来调用该任务,
task_id = AsyncBoot.apply_async(args=[name], name=name, connect_timeout=3)
其中 AsyncBoot 是已定义的任务。
我可以获取任务 ID(假设这是 apply_async
返回的长字符串)并将其存储在数据库中,但我不确定如何调用中止方法。我了解如何使用 Abortable 任务类使方法可中止,但如果我只有任务 ID 字符串,如何在任务上调用 .abort() ?谢谢。
I would like to be able to abort a task that is running from a Celery queue (using rabbitMQ). I call the task using
task_id = AsyncBoot.apply_async(args=[name], name=name, connect_timeout=3)
where AsyncBoot is a defined task.
I can get the task ID (assuming that is the long string that apply_async
returns) and store it in a database but I'm unsure how to call an abort method. I see how to make methods abortable with the Abortable tasks class but if I only have the task-id string, how do I call .abort() on the task? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
apply_async
返回一个AsyncResult
实例,或者在本例中为AbortableAsyncResult
。保存task_id
并稍后使用它实例化新的AbortableAsyncResult
,如果您不使用default_backend
,请确保提供后端可选参数。之后:
apply_async
returns anAsyncResult
instance, or in this case anAbortableAsyncResult
. Save thetask_id
and use that to instantiate a newAbortableAsyncResult
later, making sure you supply the backend optional argument if you're not using thedefault_backend
.Later:
您看到参考文档了吗?
http://celeryq.org/docs/reference/celery.contrib.abortable。 html
要中止任务,请使用
result.abort()
:Did you see the reference documentation?
http://celeryq.org/docs/reference/celery.contrib.abortable.html
To abort the task use
result.abort()
: