Celeryをインストールしたばかりで、現在の人数と状態を示す簡単なステータスページを作成したいと思います。Celery/Django - 作業者の状態をプログラム的に表示する方法
これは可能ですか?ウェブ検索から、私が見つけた最高のものはcelery.current_app.control.inspect()
ですが、私が見る限り、それは労働者について何も言及していません。 (私はKombuを使ってバックエンドにSQSを使用しています)
Celeryをインストールしたばかりで、現在の人数と状態を示す簡単なステータスページを作成したいと思います。Celery/Django - 作業者の状態をプログラム的に表示する方法
これは可能ですか?ウェブ検索から、私が見つけた最高のものはcelery.current_app.control.inspect()
ですが、私が見る限り、それは労働者について何も言及していません。 (私はKombuを使ってバックエンドにSQSを使用しています)
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人の実行中の「加算」と「眠る」という名前の労働者で、このコードを実行した場合メソッドregistered
、active
、scheduled
などは、celery.current_app.control.inspect()
が呼び出されたときに選択されたワーカーによって結果が分類された辞書を返します(引数として渡されるワーカーがない場合、すべてのワーカーが暗黙的に選択されます)。
これは有望そうです。それは私がSQS認証エラーを取得すると呼び出すと、奇妙です。私のアプリとワーカーはうまく接続することができます。おそらく、この呼び出しはSQSキューに対して余分なパーミッションを必要とするでしょうか? – Greg
エラー:SQSError:SQSError:403 Forbidden <?xml version = "1.0"?>AccessDenied
:[SQSはまだ労働者のリモート制御コマンドをサポートしていません](http://docs.celeryproject.org/en /latest/getting-started/brokers/sqs.html#caveats)。 –
なぜhttps://github.com/mher/flowerを使用しないのですか?公式のCeleryのドキュメントでさえそれをお勧めします(http://docs.celeryproject.org/en/latest/userguide/monitoring.html?highlight=flower#flower-real-time-celery-web-monitor)。 –
花はいいようですが、私のポルポーズでは、これを内部システムヘルスチェックに差し込む必要があります。だから私はプログラムでそれを行う必要があります。 – Greg
その後、花を伸ばす必要があります。 – TheGreenGoblen