web-dev-qa-db-ja.com

セロリ:スケジュールされた、アクティブな*および*完了したすべてのタスクを一覧表示します

バウンティの更新

可能であれば、監視スレッドを含まないソリューションが欲しいのですが。


Inspect私のアプリのクラスControl

i = myapp.control.inspect()

currently_running = i.active()
scheduled = i.scheduled()

しかし、すでに完了したタスクを表示する関数は見つかりませんでした。 task_idで完了したタスクを検索できるため、この情報には少なくとも一時的にアクセスできる必要があります。

>>> r = my task.AsyncResult(task_id=' ... ')
>>> r.state
u'SUCCESS'

スケジュールされたタスク、アクティブなタスク、および完了したタスクのcompleteリストを取得するにはどうすればよいですか?または、すべてのタスクのリストを一度に作成できますか?

22
Constantinius

Celery Flower タスク(アクティブ、 終了 、予約済みなど)をリアルタイムで表示します。時間、ワーカー、タイプでタスクをフィルタリングできます。

https://github.com/mher/flower

7
mher

監視スレッドを必要としないオプションの1つは、Celery on_successハンドラーです(ブートステップ機能を使用 .1以降 )-これには、関連情報を独自のデータストアに書き込む必要があります。

より少ないコードで、おそらくより良いオプションは、同様の方法で task_success signal を使用し、後で必要な情報を記録することです。

タスクの完了時にFlowerによって既に維持されている情報をクエリしているため、Flowerオプションの方がおそらく簡単です。 この回答 を参照してください。

1
RichVel