問題タブ [celerybeat]
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 - celerybeatで一度に1つのタスクのみを実行する
celerybeatを使用して1分に1回実行するタスクがあります。正常に動作します。ただし、タスクの2つのインスタンスが実行されるため、タスクの実行に1分以上かかる場合があります。これは、物事を台無しにするいくつかの競合状態につながります。
私は自分のタスクを正しく機能するように修正することができます(そしておそらくそうすべきです)が、セロリにこれを確実にするための組み込みの方法があるかどうか知りたいと思いました。私の大雑把なグーグル検索とRTFMは結果をもたらさなかった。
python - celerybeat は、起動時に表示される構成をどこから取得しましたか
celerybeat を開始すると、次のmanage.py celerybeat
ように表示されます。
上記の構成を取得したファイルを知りたいです。
セロリのデータベースをMySQLに変更したいです。どうやってやるの?
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
次のメッセージでいっぱいになっています。
これらのメッセージを定期的にパージするために何ができるか考えていますか?
celery - 単一障害点となるセロリビートを回避する
celery/rabbitmq 展開の単一障害点である celerybeat を回避するための推奨ソリューションを探しています。ウェブを検索しても、これまでのところ意味のあるものは見つかりませんでした。
私の場合、1 日 1 回、時間指定されたスケジューラーが、半日以上実行できる一連のジョブを開始します。celerybeat インスタンスは 1 つしか存在できないため、それまたはそれが実行されているサーバーに何かが発生した場合、重要なジョブは実行されません。
信頼できる(クラスタ化されたなどの)スケジューラを必要とするのは私だけではないので、これに対する有効な解決策がすでにあることを願っています。必要がないのであれば、ある種のデータベースを利用したスケジューラに頼りたくありません。
django - celeryとDjangoを使用してプログラムでcelerybeatエントリを生成する方法
プログラムでcelerybeatエントリを生成し、エントリが追加されたときにcelerybeatを再同期できるようにしたいと思っています。ここのドキュメントは述べています
デフォルトでは、エントリはCELERYBEAT_SCHEDULE設定から取得されますが、SQLデータベースにエントリを保存するなど、カスタムストアを使用することもできます。
だから私はこれを行うためにどのクラスを拡張する必要があるかを理解しようとしています。
私はセロリスケジューラのドキュメントとdjceleryapiのドキュメントを見てきましたが、これらのメソッドのいくつかが何をするかについてのドキュメントは存在しないので、いくつかのソースに飛び込もうとしていて、誰かが私を正しい方向に向けてくれることを望んでいました。
私がやっていることの高レベルが役立つと思います...ユーザーとして、事前定義された一連のタスクから選択し、ユーザーがそのためのある種のカスタムスケジュールを選択する方法を提供できる必要があります。毎日/週/月と何曜日と何時のように実行します。
また、これはdjceleryを使用したDjangoにあります。
アップデート
djcelery adminのコードは表示されますが、そのデータがどのように保持されているかがわかりません。私は現在addTask
、次のような一般的なビューを持っています:
データベースではデータは正しいように見えますが、デーモンを実行すると次のエラーが発生します。
[2012-03-06 00:23:07,926:警告/ビート]プロセスビート:
[2012-03-06 00:23:07,926:警告/ビート]トレースバック(最後の最後の呼び出し):
[2012-03-06 00 :23:07,926:WARNING /Beat]ファイル"/usr/lib/python2.7/multiprocessing/process.py"、258行目、_bootstrap
[2012-03-06 00:23:07,926:WARNING /Beat]self。 run()
[2012-03-06 00:23:07,927:警告/ビート]ファイル "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat .py "、行464、実行中
[2012-03-06 00:23:07,927:警告/ビート] self.service.start(embedded_process = True)
[2012-03-06 00:23:07,927:警告/ビート]ファイル"/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py"、行403、開始時
[2012-03-06 00:23:07,927:警告/ビート]間隔= self.scheduler.tick()
[2012-03-06 00:23:07,927:警告/ビート]ファイル "/ home / dchesterman / Documents / PythonDev / .virtualenvs / ros / local / lib / python2.7 / site-packages / celery / beat.py "、行194、ティック
[2012-03-06 00:23:07,927:警告/ビート] next_time_to_run = self .maybe_due(entry、self.publisher)
[2012-03-06 00:23:07,927:警告/ビート]ファイル "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site -packages / celery / beat.py "、行170、maybe_due
[2012-03-06 00:23:07,927:WARNING / Beat] is_due、next_time_to_run = entry.is_due()
[2012-03-06 00:23:07,928:警告/ビート]ファイル "/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/djcelery/schedulers.py" 、54行目、is_due
[2012-03-06 00:23:07,928:WARNING / Beat] return self.schedule.is_due(self.last_run_at)
[2012-03-06 00:23:07,928:WARNING / Beat] AttributeError :'NoneType'オブジェクトには属性がありません'is_due'
スケジュールがデフォルトを使用しない理由がわかりませんis_due()
python - 有限セロリビートタスク
サードパーティのAPIと統合するプロジェクトでCeleryを使用しています。処理のためにファイルをサービスに送信する必要があります。ファイルを送信した後、処理が完了するまで10秒ごとに処理のステータスを要求する必要があります。
私が今持っているように、メインタスクはサブタスクをスピンオフして処理のステータスをチェックします。これらのサブタスクを有限のセロリビートタスクのように機能させたいです。サブタスクと呼んでタスクライフを開始し、タスクが完了したら終了したいと思います。
これを達成するための最良の方法は何ですか?
python - 定期的なタスクをCeleryに動的に追加/削除する方法(celerybeat)
次のように定義された関数がある場合:
この関数をセロリPeriodicTaskとして動的に追加し、実行時に開始する方法はありますか?(擬似コード)のようなことができるようにしたいと思います:
また、(擬似コード)のようなものを使用して、そのタスクを動的に停止または削除したいと思います。
また
参考までに、私はdjceleryを使用していません。djceleryを使用すると、django管理者を介して定期的なタスクを管理できます。
django-celery - Celerybeat が起動直後にシャットダウンする
celeryd と celerybeat を使用している django アプリがあります。どちらもデーモンとして実行するように設定されています。celerybeat が正しく起動しないため、celerybeat タスクは実行されません。ログによると、すぐにシャットダウンします。
/etc/int.d/celerybeat start で開始しています
これは /etc/default/celerybeat の設定です:
タスク スケジュールは settings.py で設定されます。
./manage.py celerybeat を使用してシェルから celerybeat を実行すると、正常に動作するようです。
celeryd config には celerybeat セクションもありますが、無視されていると思います。
よろしくサイモン
django - Celerybeat - Django を使用した定期的なタスク
物事がどのように組み合わされるのかわかりません..
勝者などを発表し、キャンペーンのリマインダーを送信するアクティブなキャンペーンを含むアプリがあります。キャンペーンはdjangoで作成され、キャンペーンモデルには、X日、週、または時間ごとに勝者に通知するというフィールドがあります。したがって、このキャンペーンでは、勝者を毎週金曜日に発表する必要があります。これはキャンペーンごとです。勝者とリマインダーの設定が異なる複数のキャンペーンが存在する可能性があります。
celerybeat タスクを開始する場所がわかりません。モデルを保存する必要がありますか?しかし、何かを変更してモデルを再度保存するとどうなるでしょうか? 別のタスクを作成して、2 つ以上のリマインダーなどを送信することはありませんか?
celery - celerybeat の pidfile を無効にする
celeryd
pidfile は必要ありませんが、必要なcelerybeat
ようです。無効にする方法はありますか?Upstart を使用してプロセスを管理しているため、pidfile の使用は冗長です。