問題タブ [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.
django - celerydの停止に関する問題
celerydをデーモンとして実行していますが、正常に停止できない場合があります。TERMシグナルを送信し、キューにアイテムがある場合(この場合service celeryd stop
)、celerydは新しいジョブの取得を停止し、すべてのワーカープロセスをシャットダウンします。ただし、親プロセスはシャットダウンしません。
AとBの2つの別々のワーカーマシンでcelerydを実行しているシナリオに遭遇しました。RabbitMQサーバーに約1000のメッセージがあり、Aをシャットダウンして、上記で説明した状況を経験しました。Bは引き続き機能しましたが、サーバーに約40のメッセージが残ったまま停止しました。しかし、Bを正しく止めることができました。
Bを再起動して、40個のアイテムがキューから削除されるかどうかを確認しましたが、そうではありませんでした。次に、私はAを激しく殺し、その後Bはタスクをつかんで完了しました。
私の結論は、親プロセスがその子のためにRabbitMQサーバーから40個のアイテムを予約したということです。子を正しく刈り取りますが、手動で強制終了しない限り、アイテムをRabbitMQに解放しません。
誰かが似たようなことを経験したことがありますか?
Celery2.2.2を実行しています
django - celerybeat は定期的なタスクを自動的に無効にします
django-celeryの管理インターフェイスを使用して、セロリの定期的なタスクを作成したいと思います。手動またはスクリプトによって呼び出されたときにうまく動作するタスクをセットアップしました。celerybeatでは機能しません。デバッグログによると、タスクはenabled = False
最初の取得時に設定されていますが、その理由は不思議です。
定期的なタスクを追加して位置引数として渡す[1, False]
と、タスクは自動的に無効になり、それ以上の出力は表示されません。引数なしで追加すると、タスクは実行されますが、必要な引数を指定しなかったため、すぐに例外が発生します (理にかなっています)。
ここで何が問題なのか誰にもわかりますか?
前もって感謝します。
これは、引数を指定した後の出力です。
編集: 次の設定で動作します。なぜdjango-celeryで動作しないのか、まだわかりません。
rabbitmq - 自分の接続以外のチャネルから未確認の AMQP メッセージを回復するにはどうすればよいですか?
rabbitmq サーバーを実行し続ける時間が長ければ長いほど、未確認メッセージの問題が発生するようです。私はそれらを再び待ち行列に入れたいと思っています。実際、これを行う amqp コマンドがあるようですが、接続が使用しているチャネルにのみ適用されます。少なくとも試してみるために小さな pika スクリプトを作成しましたが、何かが足りないか、この方法では実行できません (rabbitmqctl ではどうですか?)
django - Django のセロリ (RabbitMQ と Django データベース)
バックグラウンドで大量のメールを送信できるように、Celery で Django をセットアップしようとしています。
さまざまなコンポーネントが Celery でどのように機能するかについて、少し混乱しています。RabbitMQ を使用する必要がありますか? 「django-kombu」だけでセロリを実行できますか? ( http://ask.github.com/celery/tutorials/otherqueues.html#django-database )
django-celery ドキュメント ( http://django-celery.readthedocs.org/en/latest/getting-started/first-steps-with-django.html ) の「Django の最初のステップ」から始めましたが、 「セロリワーカーサーバーの実行」に到達すると、次のことが起こります。
その後、プロセスを終了する必要があります...
celery - 間隔時間の設定に応じて、タスクをワーカー (celeryd) にプッシュするキューが必要です
私は、セロリ、rabbitmq を使用するプロジェクトに取り組んでいます。ワーカー(celeryd)にタスクをキューにプッシュする間隔を制御する権利が必要です。
rabbitmq - リモートセロリワーカーを正しく設定して実行するには?
私はセロリを初めて使用し、何か間違ったことをしている可能性がありますが、セロリを正しく構成する方法を理解するためにすでに多くの時間を費やしました。
したがって、私の環境には 2 つのリモート サーバーがあります。1つはメイン(パブリックIPアドレスがあり、データベースサーバー、rabbitmqサーバー、Webアプリケーションを実行するWebサーバーなどのほとんどのものがあります)で、もう1つはセロリを使用してメインサーバーから非同期的に呼び出したい特定のタスクに使用されます。
私は、RabbitMQ をブローカーとして、また結果のバックエンドとして使用することを計画していました。Celery の設定は非常に基本的なものです。
メインサーバーでワーカーを実行している場合、タスクは正常に実行されますが、リモートサーバーで実行している場合、いくつかのタスクしか実行されず、ワーカーがスタックしてタスクを実行できなくなります。ワーカーを再起動すると、さらにいくつかのタスクが実行され、再びスタックします。タスク内に特別なことは何もなく、2 つの数字を追加するだけのテスト タスクも試してみました。ワーカーを別の方法で実行しようとしました (デーモン化するかしないか、異なる同時実行性を設定し、celeryd_multi を使用する)、実際には何も役に立ちませんでした。
その理由は何ですか?私は何か見落としてますか?ブローカー (RabbitMQ) 以外のメイン サーバーで何かを実行する必要がありますか? それとも、セロリのバグですか?
うーん...ローカルワーカーで同じ問題を再現したばかりなので、それが何であるかはよくわかりません.N個のタスクが実行されるたびにセロリワーカーを再起動する必要がありますか?
どんな助けでも大歓迎です:)
python - セロリ労働者の変数共有の問題
プロジェクトでPythonとセロリを使用しています。プロジェクトには、2つのファイルがあります。
celeryconfig.py
およびexample.py
celeryconfig.pyで、 CELERYD_CONCURRENCYを2に設定しました。これは、タスクキュー内のタスクを2つの異なるプロセスに分散することを意味します。
Pythonコンソールから、次のコマンドを実行します。
これにより、2人のワーカーによって同時に実行される2つのタスクが作成されます。問題は、両方のワーカープロセスがタスク関数[ getDigest() ]を実行しているため、同じハッシュオブジェクト(md5)を使用しているように見えることです。以下に示すように、 celerydの出力はこれを確認します。
簡単にするために、hashlibのmd5オブジェクトを使用していますが、実際のプロジェクトでは、複数のプロセスからアクセスおよび変更できないオブジェクトを使用しています。これにより、ワーカーがクラッシュすることが予想されます。
それは質問を提起します:ワーカープロセスを初期化して独自の( md5)オブジェクトを使用するようにコードを変更するにはどうすればよいですか?現在、それらは同じオブジェクトを共有しているため、アプリケーションがクラッシュします。これは可能ですか?
django - Celery と Redis がメモリを使い果たし続ける
Heroku にデプロイされた Django アプリがあり、ワーカー プロセスがセロリを実行しています (+ 監視用のセロリカム)。RedisToGo の Redis データベースをブローカーとして使用しています。Redis のメモリが不足していることに気付きました。
これは私のprocfileがどのように見えるかです:
KEYS '*' の出力は次のとおりです。
- "_kombu.binding.celeryd.pidbox"
- 「celeryev.643a99be-74e8-44e1-8c67-fdd9891a5326」
- "celeryev.f7a1d511-448b-42ad-9e51-52baee60e977"
- "_kombu.binding.celeryev"
- "celeryev.d4bd2c8d-57ea-4058-8597-e48f874698ca"
- `_kombu.binding.celery"
celeryev.643a99be-74e8-44e1-8c67-fdd9891a5326
次のメッセージでいっぱいになっています。
これらのメッセージを定期的にパージするために何ができるか考えていますか?
django - djangocelerydをWindowsで動作させることができません
私は次の場所にあるrunserverで問題なく実行されるdjangoプロジェクトを持っています:
私のsettings.pyとmanage.pyは上記のパスにあります。
信頼できるcmdシェルを開き、そのディレクトリにcdして実行するmanage.py celeryd
と、次のエラーで例外が発生します。
けっこうだ。GoogleとStackOverflowが助けになり、答えが見つかりました。コマンドに提供する必要があります--settings=settings
。runserverは必要ないので奇妙ですが--settings=settings
、それは人生です。私は妥協するつもりです。エラーが発生し続けます:
だから私は頭を激しく引っ掻いて、この男に別のpythonpathを与えると、彼はうまく配置されるかもしれないと決めました。私の次の試みは:
今、私たちはどこかに到達しています!エラーはありません。ただし、settings.pyと同じディレクトリにある私のceleryconfig.pyは処理されません。私のタスクはどれもロードされていません。構文エラーをceleryconfg.pyに入れて、ロードされていないことを証明しました。
次のステップは、django1.4のmanage.pyを使用することでした。このmanage.pyは、D:\EverTabs\work\evertabs-website\src\
ではなくに配置されD:\EverTabs\work\evertabs-website\src\evertabs\
ます。この時点で、単純な構文でcelerydを実行でき、pythonpathに追加する必要はありません。それでも、私のceleryconfig.pyは変更されていません。
さらなる調査によると、tasks.pyをトップレベルのディレクトリ9に追加すると、setting.pyが配置されます)。セロリはそれらを自動発見します。これはうまくいきました。ただし、celeryconfig.pyはまだ処理されていないため、そこでより複雑な構成を行うことはできません。今のところ、私のタスクが最終的に見つかったので、これは問題ではありません。ただし、celeryconfig.pyが処理されていないのは非常に気になります。
結局、現代のセロリがceleryconfig.pyを探していないのではないかと今私は気づいています。これらの設定をsettings.pyに入れるだけで、セロリがそれらを取得します。物事は良く見え始めています。
python - 再試行サイクルごとにセロリの再試行時間を増やします
ドキュメントのようにセロリで再試行します-例:
このジョブで再試行が発生するたびに再試行カウントダウンを増やすにはどうすればよいですか?たとえば、MaxRetriesExceededが発生するまで60秒、2分、4分などです。