9

セロリでは、特定のタスク名のすべてのタスクのタスク ステータスを取得したいと考えています。そのために、以下のコードを試しました。

import celery.events.state

# Celery status instance.
stat = celery.events.state.State()

# task_by_type will return list of tasks.
query = stat.tasks_by_type("my_task_name")

# Print tasks.
print query

今、このコードで空のリストを取得しています。

4

3 に答える 3

1

これはネイティブでサポートされていません。バックエンド (Mongo、Redis など) によっては、キューの内容をイントロスペクトしてその内容を確認できる場合とできない場合があります。その場合でも、現在進行中のアイテムを見逃すことになります。

つまり、これを自分で管理できます。

result = mytask.delay(...)
my_datastore.save("mytask", result.id)
...
for id in my_datastore.find(task="mytask"):
    res = AsyncResult(id)
    print res.state
于 2013-10-01T06:06:37.637 に答える
0

セロリでは、他の関数からアクセスしたい場合は、タスク ID を介してアクセスすることで、タスクのステータスを簡単に見つけることができます。

サンプルコード:-

@task(name='Sum_of_digits')
def ABC(x,y):
   return x+y

このタスクを追加して処理する

 res = ABC.delay(1, 2)

タスクresを使用して、状態、ステータス、および結果を取得します (res.get())

 print(f"id={res.id}, state={res.state}, status={res.status}")
于 2019-06-18T12:03:22.203 に答える