問題タブ [celeryd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
celery - Celeryd は私のワーカーを実行しません
セロリでタスクをデーモン化しようとしています。デーモン化せずにテストしましたが、非常にうまく機能しています。
しかし、チュートリアルのようにデーモン化することはできません ( http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#daemonizing ) 私は自分のファイルを持っています:
solr_desa.py
セロリconfig.py
また、 /etc/default/celeryd
https://github.com/celery/celery/blob/3.0/extra/generic-init.d/celerydのデフォルトの celeryd で実行しますが、タスクはキューに入れられただけですが、ワーカーがないように見えます:(
構成のどこに間違いがありますか? :(
python - Celeryd 時間制約エラー
status コマンドの実行中に、次のエラーが表示されます:-
このエラーをデバッグするにはどうすればよいですか?
私もこの質問をチェックしました。そこでの答えは役に立ちませんでした。
django/celery - セロリのステータス:エラー:時間制限内にノードが応答しませんでした
編集:-
セロリビートのログを確認したところ、次のエラーが見つかりました
celery - CelerydのAWSBeanstalksへのデプロイ
私は、Celeryを使用して長時間実行されるバックグラウンドプロセスを実行するPythonWebサイトに取り組んでいます。セロリワーカーを使用したWebサイトをBeanstalkコンテナにデプロイする予定です。
Beanstalkコンテナで悪魔としてセレブワーカーをデプロイして実行する方法の有効期限やアイデアを共有してください。
python - セロリワーカーを再起動するPythonセロリタスク
セロリでは、ワーカーを自動的に再起動するために使用できる (一連の) タスクを作成する簡単な方法はありますか?
目標は、github から新しいソースを取得するたびに、デプロイですべての子セロリ ワーカーを自動的に再起動させることです。そのため、そのマシン上の管理セロリ インスタンスに restartWorkers() タスクを送信して、そのマシン上のすべてのセロリ ワーカー プロセスを強制終了 (実際には stopwait) し、新しいモジュールで再起動することができます。
計画は、各マシンに次のものを持たせることです。
- 管理ノード [キュー: 管理、マシン固有] - マシン上の残りのワーカーを管理し、必要に応じて新しいノードを立ち上げ、古いノードを強制終了します。
- ワーカー ノード [キュー: git リビジョン固有、ワーカー固有、マシン固有] - 実際に作業を行う責任があります。
必要なコードは dist_packages/celery/bin/celeryd_multi.py のどこかにあるようですが、ワーカーを開始するためのソースはかなり不透明であり、どのように機能するのか、実際にノードを開始する場所がわかりません。( shutdown_nodes は、プロセスを強制終了するために呼び出す正しいコードのようです。引数がどうあるべきかを理解するために、ゆっくりとデバッグしています)
呼び出すことができる関数/関数 restart_nodes(self, nodes) はどこかにありますか、それとも Python 内からシェル スクリプトを実行するつもりですか?
/また、プロセスを強制終了して再起動するよりも、ソースを Python に再ロードする簡単な方法はありますか? モジュールのリロードが実際に機能することを知っていれば (実験によると、機能しないとされています。関数の変更は、プロセスを再起動するまで浸透しません)、管理ノードで間接的に行うのではなく、それを行うだけです。
編集:ブロードキャストのおかげで、シャットダウンできるようになりました(ミハエルに感謝します。担当者がもっといれば、賛成します)。再起動をブロードキャストする方法はありますか? pool_restart がありますが、それはノードを強制終了しません。つまり、ソースを更新しません。
私は celery.bin.celeryd:WorkerCommand().run() の舞台裏のソースのいくつかを調べてきましたが、実行呼び出しの前後に奇妙なことが起こっているので、それを呼び出すことはできません機能し、クラッシュするため実行されます。Pythonスクリプトからシェルコマンドを呼び出して別のPythonスクリプトを実行するのはまったく意味がありません。これをやりたいと思ったのは私が最初だとは信じられません。
scheduled-tasks - 複数のキューから消費する Celery ワーカーは、最初にどれを消費するかをどのように決定しますか?
Redis をバックエンドとして、Celery を使用して非同期バックグラウンド タスクを実行しています。次の状況での Celery ワーカーの動作に興味があります。
を使用してワーカーをデーモンとして実行していますceleryd
。-Q
このワーカーには、オプションを介して消費する 2 つのキューが割り当てられています。
ワーカーは、消費する次のタスクをフェッチする場所をどのように決定しますか? またはのいずれかからタスクをランダムに消費しますqueue1
かqueue2
? queue1
に渡される引数のリストの最初にあるため、からのフェッチを優先し-Q
ますか?
celery - セロリでは、複数のワーカーが同じキューを処理する目的は何ですか?
celeryd-multi のドキュメントには、次の例があります。
(ここから: http://docs.celeryproject.org/en/latest/reference/celery.bin.celeryd_multi.html#examples )
上記の例のように、1 つのホスト上で複数のワーカーが同じキューを処理するのが良い理由の実用的な例は何ですか? それが同時実行の設定ではないでしょうか。
より具体的には、次の 2 行 (A と B) の間に実際的な違いはありますか?
A:
B:
この実際的な違いを理解していないために、タスク キューに関する貴重な知識が欠けているのではないかと心配しています。
ありがとう!
python - Celery全体でPythonメソッドのシグネチャを変更するのが難しい
これはおそらくキャプテンの明らかなスタイルの質問ですが、何かが足りないような気がします。
Celeryタスクを作成するPythonWSGIアプリを継承しました。これは次のようになります。
メソッドは次のprocess_request
ようになります。
上記のすべてが機能します。process_requestにタイムスタンプを追加しようとしたので、呼び出しは次のようになります。
そして、process_request
メソッドを次のように変更しました。
それはうまくいきませんでした。リクエストは処理されていませんでした。celerydログファイルを確認したところ、次のことがわかりました。
何が間違っているのかわかりません。誰かアイデアはありますか?
celery - 特定の時点で実行されたセロリ タスクの数
その場で非同期に一連のセロリタスクを作成しようとしています。非同期で開始する 1000 のタスクがあり、タスクを実行するために celeryd プロセスを 1 つしか実行していないとします。これらのタスクを処理するためにセロリによっていくつのスレッドが作成されるでしょうか?
タスクキューを処理するためにセロリが自動的に開始する複数のスレッドがある場合、セロリが特定の時点で 100 スレッドのみを実行するように制限するにはどうすればよいですか。
ありがとう。
django - Django Celerybeat PeriodicTask が予想よりもはるかに多く実行されています
Django、Celery、djcelery、および PeriodicTasks に苦労しています。
Adsense のレポートを取得してライブ統計レポートを生成するタスクを作成しました。これが私の仕事です:
セロリとRabbitMQを使用しています。ここに私の設定があります:
一見するとすべてが機能しているように見えますが、ロガーをオンにして実行を観察したところ、タスクが少なくとも 4 回連続して実行されていることがわかりました。また、2 分ごとではなく、1 分ごとに実行されているようです。crontab を使用するように run_every を変更しようとしましたが、同じ結果が得られます。
スーパーバイザーを使用してセロリビートを開始しています。これが私が使用するコマンドです:
なぜ期待どおりに機能しないのかについてのアイデアはありますか?
ああ、もう1つ、日が変わった後も、最初に実行した日付範囲を引き続き使用します。そのため、日が進むにつれて、タスクの実行が開始された日の統計が取得され続けます。ある時点でタスクを手動で実行しない限り、最後に手動で実行した日付に変更されます。なぜこれが起こるのか誰か教えてもらえますか?