2016-03-28 13 views
5

Celeryをインストールしたばかりで、現在の人数と状態を示す簡単なステータスページを作成したいと思います。Celery/Django - 作業者の状態をプログラム的に表示する方法

これは可能ですか?ウェブ検索から、私が見つけた最高のものはcelery.current_app.control.inspect()

ですが、私が見る限り、それは労働者について何も言及していません。 (私はKombuを使ってバックエンドにSQSを使用しています)

+0

なぜhttps://github.com/mher/flowerを使用しないのですか?公式のCeleryのドキュメントでさえそれをお勧めします(http://docs.celeryproject.org/en/latest/userguide/monitoring.html?highlight=flower#flower-real-time-celery-web-monitor)。 –

+0

花はいいようですが、私のポルポーズでは、これを内部システムヘルスチェックに差し込む必要があります。だから私はプログラムでそれを行う必要があります。 – Greg

+1

その後、花を伸ばす必要があります。 – TheGreenGoblen

答えて

7

the documentation of celery workersinspectコマンドの出力について説明しています。

デフォルトでは、celery.current_app.control.inspect()を使用すると、実行中のすべてのワーカーの状態を尋ねることができる「インスペクタオブジェクト」が返されます。

i = celery.current_app.control.inspect() 
    i.registered() 

のようなものを返すことができi.registered()への呼び出し::結論

{ 
     '[email protected]': ['tasks.add'], 
     '[email protected]': ['tasks.sleeptask'], 
    } 

を、「インスペクタ」たとえば次の2人の実行中の「加算」と「眠る」という名前の労働者で、このコードを実行した場合メソッドregisteredactivescheduledなどは、celery.current_app.control.inspect()が呼び出されたときに選択されたワーカーによって結果が分類された辞書を返します(引数として渡されるワーカーがない場合、すべてのワーカーが暗黙的に選択されます)。

+0

これは有望そうです。それは私がSQS認証エラーを取得すると呼び出すと、奇妙で​​す。私のアプリとワーカーはうまく接続することができます。おそらく、この呼び出しはSQSキューに対して余分なパーミッションを必要とするでしょうか? – Greg

+0

エラー:SQSError:SQSError:403 Forbidden <?xml version = "1.0"?>送信者AccessDeniedリソースhttps://queue.amazonaws.com/へのアクセスが拒否されました。それはまだサポートされないことと思われ 37b59c-EE-aa5c-faeb0ecba29f Greg

+0

:[SQSはまだ労働者のリモート制御コマンドをサポートしていません](http://docs.celeryproject.org/en /latest/getting-started/brokers/sqs.html#caveats)。 –

関連する問題