問題タブ [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 - 同じIDのタスクを複数回受け取るセロリワーカー
セロリを使ったdjangoプロジェクトがあります。一部のワーカーが同じ ID のタスクを複数回受け取るという問題が発生しています。ログのスニペットを次に示します。
id 70d6a7d3-3cb4-4e01-8d04-4d084e36bdfb が 9239 行目と 9243 行目で繰り返され、9246 行目と 9250 行目で実行されていることを確認してください。
これらのタスクは、django 管理ページにクエスチョン マークとして表示されます???
。
私は使用しています(そして、これらが古いバージョンであることは知っています):
これは、ワーカーとセロリビートを開始する方法です。
この設定のオン/オフを切り替えても解決しませんでした:
私はここで問題を見ましたが、最終的な解決策は見ていません。
これも見たことがありますが、決定的な解決策もありません。正確なコンテキストを提供することを考えました。
どんな助けでも大歓迎です。
django - Django で Celery Daemon を設定する方法
私が知る限り、セロリのセットアップ方法を説明したドキュメントが 2 つあります。「ワーカーをデーモンとして実行する」と「Django の最初のステップ」があります。
Django docs では、次のように述べています。
また、Celery の構成ソースとして Django 設定モジュールを追加します。これは、複数の構成ファイルを使用する必要がなく、代わりに Django 設定から直接 Celery を構成することを意味します。
すごいですね。ただし、私が知る限り、これらは完全な Celery のデーモン化に必要なファイルです。
/etc/init.d/celeryd
/etc/defaults/celery
/my-proj/celery.py
/my-proj/__init__.py
そしておそらく:
/my-proj/settings.py
ファイルがたくさんある少年。私はそれらをすべて適切に設定したと思います:
/etc/init.d/celeryd
celery が提供するデフォルトの init.d スクリプトがあります。
/li>/etc/defaults/celery
ほとんど何も持っていません。私のアプリへの単なるポインタ:
/li>/my-proj/celery.py
First Steps with Djangoの推奨ファイルがあります。
/li>/my-proj/__init__.py
Djangoの最初のステップからの推奨コードがあります:
settings.py
そして、ファイルには次のようなすべてのセロリ関連の設定があります。
それでも、を使用してセロリを開始するsudo service celeryd start
と、機能しません。代わりに、次のように表示されているため、Django プロジェクトから設定が取得されていないことは明らかです。
ベイリングワイヤーが機能していないアイデアはありますか? 私は何か大きなものを見逃していますか?
python - Celery ワーカーがデーモンとして実行されている場合、ジョブを完了できません
私はdjangoとredisを使ってセロリをセットアップしています。celery multi start 123_work -A 123 --pidfile="/var/log/celery/%n.pid" --logfile="/var/log/celery/%n.logのように、ユーザーからコマンドでセロリを実行すると" --workdir="/data/ports/dj_dois" --loglevel=INFOジョブは正常に機能していますが、 celerydまたはスーパーバイザー経由でセロリを実行すると、一部のジョブでエラーが発生します。
私のセロリバージョン:
ピスノン - 3.4
ジャンゴ-1.8.7
Redis サーバー v=2.8.17
エラーが発生するジョブの例:
celery - 別のタスクを呼び出すとセロリの構成が更新される
RabbitMQ ブローカーを使用して、さまざまな django アプリとして複数のタスクを実行しています。これは標準のdjango構成でセットアップされ、完全に機能していました。グループ、チェーンを使用し、異なるモジュールからそれらを呼び出していました。
標準的な慣行として、私は次のことを行いました。
セロリ.py:
そして project/ init .py で:
すべてのタスクは celery.Task から継承され、run() が上書きされました。
ここで、別の RabbitMQ ブローカーで別のタスクを呼び出す必要があります。
したがって、別のタスクを呼び出さなければならなかった場所で私がしたことは次のとおりです。
今すぐ呼び出す:
これを行った後、以前のタスクを呼び出すと、それらはこの新しいブローカーにルーティングされます。このコードをコメントアウトした瞬間、すべてが元に戻ります。
celery_app (上記) conf を確認すると、ブローカーの URL は正しいです。しかし、以前のタスク -> アプリ -> 設定 -> ブローカーの URL を確認すると、新しいブローカーで更新されます。これを修正する方法は?
python - django-celery をデーモンとして実行する際の OS エラー
セロリをデーモンとして実行する必要があります。これにはスーパーバイザーを使用していません。代わりに、システムの起動時に init を使用してセロリを実行したいと考えています。
これは、セロリを起動する際に発生するエラーのトレースバックですsudo /etc/init.d/celeryd start
/var/www/html/hello
私のルートdjangoアプリケーションのパスです
hereからチュートリアルに従っています。
stackoverflow などに関するいくつかの回答を閲覧したところ、権限の問題である可能性があることがわかりました。しかし、その後、新しいグループとユーザーを作成し、このグループを django root アプリケーション全体に割り当てました。問題は解決しません。
私は永遠のようにこれにこだわっています。誰でもこれを修正する方法を教えてもらえますか?
python - Celery デーモンの複数のキュー
大量の I/O タスクに使用される Celery サーバーとワーカーのネットワークがあります。と の 2 つのキューがdefault
ありbacklog
、各サーバーには 5 つのワーカーがあります。すべてのサーバーは、 init スクリプト構成ドキュメントによく似た構成でデーモン化されます。
1 台のサーバーでやりたいことは、 に 3 つのワーカー、default
に 2つのワーカーを用意することbacklog
です。デーモン構成でこれを行うことは可能ですか?
python - Supervisord を使用した Celeryd マルチ
celery multi で Supervisord (3.2.2) を実行しようとしています。
Supervisord では処理できないようです。単一のセロリ ワーカーは正常に動作します。
これは私の監視構成です
celeryd.conf
セロリの起動方法をエミュレートするために、次のスーパーバイザー変数を使用しています。
- %(program_name)s
- %(process_num)d
- @
- %(host_node_name)s
スーパーバイザctl
/でこの値を変更してみましたusr/local/lib/python2.7/dist-packages/supervisor/options.py from 0 to 1:
私はまだ得る:
Celery は起動していますが、supervisord はそれを追跡していません。
root@parzee-dev-app-sfo1:/etc/supervisor#
セロリ.sh
類似: スーパーバイザーで celeryd_multi を実行 する 複数のキューとワーカーでスーパーバイザー + Django + セロリを使用する方法は?
python - Celeryd は /etc/default/celeryd の BROKER_URL を無視します
概要
- Celery を celeryd 経由でデーモンとして実行しています (指示に従って)
- 設定ファイル /etc/default/celeryd BROKER_URL="redis://localhost:6379/0" で redis をブローカーとして指定
- ワーカー ログ ファイルは、BROKER_URL がデフォルト ブローカへの接続をまだ試行しているため、無視されていることを示しています。
ERROR/MainProcess] consumer: amqp://guest に接続できません:**@localhost:5672//: ソケットを開く際のエラー: ソケット エラーが発生しました。
質問: BROKER_URL を引数として渡すために、オンライン手順で提供された基本テンプレートを超えて /etc/init.d/celeryd ファイルを変更する必要がありますか?