問題タブ [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.

0 投票する
1 に答える
437 参照

celery - セロリの app.conf.humanize(with_defaults=False) のデフォルトと見なされるものは何ですか?

ユーザーガイドapp.conf.humanize(with_defaults=False)の例に従って、セロリの設定を印刷しようとしています。しかし、 を使用すると常に空の文字列が返されます。代わりにを使用して変更を確認できるため、構成の変更が有効であることがわかります。with_defaults=False.humanize(with_defaults=True)

で構成を追加するとapp.conf.config_from_object('myconfig')、構成設定が「デフォルト」としてロードされると思いますが、デフォルトではない方法でモジュールで構成をロードする方法はありますか?myconfig

これは私のソースコードです:

セロリの使用を開始するenv PYTHONPATH=. celery worker --loglevel=INFOと、印刷されますconfig: (変更するwith_defaults=Trueと、期待される完全な出力が得られます)。

0 投票する
1 に答える
1428 参照

python - 誤って構成されたセロリの修正 (supervisord で実行)

私は、8 つのコアまたは CPU を備えた単一の VM でホストされている Python/Django Web プロジェクトで、タスクのためにセロリの実行を開始しました。今すぐ設定を改善する必要があります - 私は初歩的なミスを犯しました。

私はsupervisorセロリの労働者とビートを処理するために使用します。には/etc/supervisor/conf.d/、worker 関連の conf ファイルcelery1.confcelery1.conf. するべきか...

1)それらの 1 つを削除しますか? どちらも異なるワーカーを生成します。つまり、以前の conf ファイルにはcommand=python manage.py celery worker -l info -n celeryworker1. 後者はcommand=python manage.py celery worker -l info -n celeryworker2. ここでは、マシンごとに 1 つのワーカーを実行することが正式に述べられています。

2) conf をnumprocsいじくり回しますか? 現在 にありcelery1.conf、 を定義しましnumprocs=2た。では、 *celery2.confを定義しました(後でフッターを参照)。numprocs=3同時に/etc/default/celeryd、私は を持っていCELERYD_OPTS="--time-limit=300 --concurrency=8"ます。どうしたの?スーパーバイザーは celerydnumprocsよりも優先されますか、それとも何ですか? concurrency設定する必要がありnumprocs=0ますか?


*両方のファイルの合計 numprocs = 2+3 = 5. これでチェックアウトされます。sudo supervisorctl5 つのセロリ ワーカー プロセスを示します。しかし、newrelic では、celeryd に対して45 のプロセスが実行されています。一体何?! スーパーバイザーによって作成された各 proc が実際に (celeryd を介して) 8 つの proc を生成している場合でも、合計numprocs x concurrency = 5 x 8 = 40. これは、newrelic が示した 45 よりも 5 少ない数です。これらの過ちを正すためのガイダンスが必要です。

スクリーンショットを比較します。

Supervisorctl ごとに 5 つのセロリ ワーカー

newrelic に従って 45 の実行中のセロリ プロセス

0 投票する
0 に答える
88 参照

python - グループタスクの実行中にコードグループを変更する

chord定期的なタスクで次を実行しています。

各タスク ( task_A1task_A2... 、task_An) の実行には 5 ~ 10 分かかる場合があります。

次のシナリオを考えてみましょう: 定期的なタスク (毎時) の間、task_A1..task_Anが並行して実行されています。ここで、別のフローから誰かが外部task_A1'タスクをトリガーしました。私の目標は、現在実行中のものだけを停止して置き換えtask_A1、フローをそのまま (停止せずに..)維持task_A1'することtask_A2です。task_Antask_A2, ... ,task_Antask_A1'task_B

task_A1私の現在の解決策は、 &を取り消しtask_Bて新しいタスクtask_A1'&をキューに追加することですが、次のようなものを達成するためにtask_B'、既に実行中の とこの新しい組み合わせを作成する方法を知りたいです:task_A2, ... , task_An

タスクを取り消し、CeleryRouter でそれらを「再配線」することでそれを行っています。と からタスクを取得しceleryapp.control.inspect().active()ていceleryapp.control.inspect().reserved()ます。私の目標を達成するエレガントな方法があるのだろうか。

ありがとう。