問題タブ [django-celery]
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.
python - Django-Celeryでタスクを再試行する-Django/Celery
タスクの再試行で問題が発生しました。テストタスクは次のようになります。
装飾されたタスクを再試行する方法に関するドキュメントがまったく見つかりません。見つけたのはこれだけです。
self
メソッドから渡される変数がないため、これは私の場合には機能しないようです。
編集:
私は今、無駄に次のことを試みています:
次のエラーが発生します。
TypeError("再試行のkwargs引数を空にすることはできません。タスクは**kwargsを受け入れる必要があります。http://bit.ly/cAx3Bgを参照してください"、)
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 - django の runserver オプションは、他の再起動スクリプトを実行するためのフックを提供しますか?
私は最近、ジャンゴとセロリで遊んでいます。開発中に厄介なことの 1 つは、タスクを変更するたびにセロリ デーモンを再起動する必要があることです。私が開発しているときは、通常、アプリの変更時に django フレームワークを自動的にリロードする「manage.py runserver」を使用するのが好きです。
runserver が実行するリロードプロセスにフックを追加して、実行中のセロリデーモンを自動的に再起動する方法はありますか?
または、セロリには、開発に使用する必要がある同様の監視および変更時のリロード モードがありますか?
python - セロリ/Redisのいくつかの(多くの)メッセージがドロップされる
メッセージブローカーとして、Celery (2.2.4) と Redis (v.2.2.2) を使用しています。
一部の (ほとんどの) メッセージがランダムに一貫性なく失われる原因は何ですか?
rabbitmq - Celeryタスクの再試行(Celery、Django、RabbitMQ)
セロリでタスクに再試行するように指示すると、何が起こっているのか教えていただけますか?同じワーカースレッドで再試行しますか、それとも他の場所に送信する可能性のあるブローカーに返されますか?
ワーカーまたはディスパッチャが突然停止した場合、再試行のタスクはどうなりますか?タスクが失われる可能性がある場合、これを回避するためのアプローチはありますか?各タスクをデータベースに保存し、しばらく結果が得られない場合は再試行できますか?
または、ディスパッチャが独自の永続ストレージを持っている可能性がありますか?タスクの受信中または実行中にワーカースレッドがクラッシュした場合はどうなりますか?
rabbitmq - 失われたタスクまたは失敗したタスクを再試行する(Celery、Django、RabbitMQ)
タスクが失われたかどうかを判断して再試行する方法はありますか?
失われた理由は、ディスパッチャのバグまたはワーカースレッドのクラッシュである可能性があると思います。
それらを再試行することを計画していましたが、どのタスクを廃止する必要があるかを判断する方法がわかりませんか?
そして、このプロセスを自動的に行う方法は?新しいタスクを作成する独自のカスタムスケジューラを使用できますか?
編集:ドキュメントから、RabbitMQがタスクを失うことはないことがわかりましたが、タスクの実行中にワーカースレッドがクラッシュするとどうなりますか?
twitter - Twitterと通信するCelery Task
レート制限があり、長期間欠落している (応答していない) サービスと通信するセロリタスクを作成するときの正しいアプローチは何ですか?
タスクの再試行を使用する必要がありますか? サービスに時間がかかりすぎる場合はどうなりますか? このタスクを後で実行するために長期間保存する方法はありますか?
これが長いタスクのサブタスクである場合はどうなりますか?
rabbitmq - Celery タスク スケジュール (Celery、Django、RabbitMQ)
5 分ごとに実行されるタスクが必要ですが、最後の実行が終了するのを待ってから、この 5 分のカウントを開始します。(この方法で、実行中のタスクが 1 つだけであることも確認できます) 私が見つけた最も簡単な方法は、django アプリケーションの manage.py シェルを実行して、これを実行することです。
しかし、この方法で実行したいタスクごとに、独自のシェルを実行する必要があります。簡単な方法はありますか? ジャンゴのセロリスケジューラーの王様のカスタムかもしれませんか?
celery - Django Celery: ゼロのタスク/ワーカーを表示する管理インターフェイス
バックエンドとして Django ORM を使用して Celery をセットアップしました。舞台裏で何が起こっているのかを監視しようとしています。
-E フラグ を付けてcelerydを開始しました
python manage.py celeryd -E -l INFO -v 1 -f /path/to/celeryd.log
デフォルトのスナップショット頻度 1 秒でcelerycamを開始しました。
python mannage.py celerycam
実行されているタスク (セロリ ログ) と保存されている結果 (これらのタスクによって定期的に変更されるデータ モデル) を確認できます。ただし、Django 管理パネルのタスク/ワーカー ページにはアイテムが表示されません。celeryevを起動すると、同じことが起こります (イベント/タスク/ワーカーを表示します)。
監視を実現するために変更する必要がある追加の構成設定はありますか?
私のソフトウェア スタック: Django 1.1、Celery 2.2.4、Python 2.4