7

Celery キューから (rabbitMQ を使用して) 実行されているタスクを中止できるようにしたいと考えています。を使用してタスクを呼び出します

task_id = AsyncBoot.apply_async(args=[name], name=name, connect_timeout=3)

ここで、AsyncBoot は定義済みのタスクです。

タスク ID (返される長い文字列であると仮定) を取得しapply_asyncてデータベースに保存することはできますが、abort メソッドを呼び出す方法がわかりません。Abortable タスク クラスでメソッドを中止可能にする方法はわかりましたが、タスク ID 文字列しかない場合、タスクで .abort() を呼び出すにはどうすればよいですか? ありがとう。

4

2 に答える 2

11

apply_asyncはインスタンスを返します。AsyncResultこの場合は を返しますAbortableAsyncResult。を保存し、それtask_idを使用して後で新しいインスタンスをAbortableAsyncResult作成します。.default_backend

abortable_async_result = AsyncBoot.apply_async(args=[name], name=name, connect_timeout=3)
myTaskId = abortable_async_result.task_id

後で:

abortable_async_result = AbortableAsyncResult(myTaskId)
abortable_async_result.abort()
于 2010-08-31T08:43:15.730 に答える
4

参考資料はご覧になりましたか? http://celeryq.org/docs/reference/celery.contrib.abortable.html

タスクを中止するには、次を使用しますresult.abort()

>>> result = AsyncBoot.apply_async(...)
>>> result.abort()
于 2010-08-27T13:21:13.470 に答える