問題タブ [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.
django - crontab(day_of_month=1) に設定された celerybeat は、月に複数回タスクを送信します
crontab(day_of_month = 1)に設定されたこのタスクがあります。しかし、タスクを実行すると、一度実行するはずのタスクを細かく送信し続けます。
私のtasks.pyから
何か不足していますか?
django - Ubuntu での CeleryBeat の問題
CeleryBeat に奇妙な問題があることに気付きました。私にとって非常に重要で重要な定期的なタスクを実行するために定期的に使用しています。ときどき (ほぼ 2 ~ 5 日ごと)、CeleryBeat が静かに失敗することに気付きます。ログ (すべて) に警告やエラーはなく、本当に混乱しています。
celerybeat から情報を取得する他の方法はありますか? 私のceleryd構成には、セロリ用の次のオプションがあります。
私が行方不明になっているものは他にありますか?
[編集]
死ぬ前のセロリビート ログの最後のエントリ:
ご覧のとおり、実際には情報がありません。私のdjangoログとセロリログにもエラーはありません。
python - Nginx(Django) ImportError:名前celerydをインポートできません
プロジェクトをローカル マシンでテストしたところ、問題なく動作しました。しかし、リモートサーバー(CentOS)にアップロードした後、celerybeatを実行できません。
これが私の命令です。
python manage.py celeryd --events --loglevel=INFO -c 5 --settings=[settings-directory].production
このコマンドは、ローカル マシン ( --settings=[settings-directory].localを使用) で機能しますが、リモート サーバーではImportError: cannot import name celeryd
発生します。
セロリに関する設定はbase.pyにあります。local.pyとproduction.pyはファイルをインポートします。production.pyには、DEBUG、静的、データベース設定のみがあります。
リモートマシンのシェルにdjceleryとceleryをインポートできます。
どうすればこれを解決できますか?
--
これはバージョンの問題だと思います.. celery3.1について読んでいます
django - セロリ 3.1 で、django を定期的なタスクにする
Django ではあまりにも多くのことが変更されたため、3.1 を使用できません。助けが必要です。
make a task in djangoについて読み、定期的なタスクのドキュメントを読みました。しかし、djangoで定期的なタスクを作成する方法がわかりません。これは私の低レベルの英語のせいだと思います..
古いバージョンの Celery では、djceleryとcrontabをインポートして、 settings.pyにCELERYBEAT_SCHEDULE を設定し、 manage.pyで実行していました。
しかし、その方法ではもうセロリデーモンを実行できないようです。CELERYBEAT_SCHEDULEをどこに置くべきですか?docs の django の例では、 proj/proj/celery.pyos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
に設定
されています。(1) では、 settings.pyで celerybeat を設定することは(以前のように) OK ですか?
(2) 可能であれば、django で定期的なタスクを作成する小さな例が非常に役立ちます。チュートリアルを読んでいるとき、最も混乱したのはFile Pathでした。全体の例を提供したくない場合は、どこでタスクを作成し、ビートを設定し、デーモンを実行するかについて説明していただければ幸いです。
読んでくれてありがとう。
python - セロリは引数を打ち負かす: リストとタプル
Celeryのドキュメントでは、リストまたはタプルとしてビート スケジュール タスクに位置引数を渡す方法について説明しています。
整数のリストである単一の引数を取るタスクがあります。
私のセロリビートのスケジュールは次のようになります。
私のタスクは "int is not iterable" で失敗しますTypeError
。私のモニター(セロリの花)によると、引数は として渡され[1]
ます。
のように引数をリストにすると、[[1]]
引数がモニターに表示され、[[1]]
正常に動作します。
私の質問は次のとおりです。タプルの場合、引数をどのように渡しますか? なんで?
python - Celery Beat: 一度に 1 つのタスク インスタンスに制限する
セロリ ビートとセロリ (4 ワーカー) を使用して、いくつかの処理手順を一括で実行します。これらのタスクの 1 つは、「Y が作成されていない X ごとに、Y を作成する」という行にほぼ沿ったものです。
タスクは、準高速 (10 秒) で定期的に実行されます。タスクは非常に迅速に完了します。進行中の他のタスクもあります。
ビート タスクが明らかにバックログになるという問題に何度も遭遇したため、(異なるビート タイムの) 同じタスクが同時に実行され、誤って重複した作業が発生します。また、タスクが順不同で実行されているようにも見えます。
セロリビートを制限して、一度にタスクの未解決のインスタンスを 1 つだけにすることはできますか?
rate_limit=5
これを行うための「正しい」方法は、タスクのようなものを設定していますか?Beat タスクが順番どおりに実行されるようにすることは可能ですか? たとえば、タスクをディスパッチする代わりに、beat がそれをタスク チェーンに追加しますか?
これらのタスク自体をアトミックに実行し、同時に実行しても安全である以外に、これを処理する最良の方法は何ですか? これは、私が予想していたビート タスクの制限ではありませんでした…</p>
タスク自体は素朴に定義されています。
これが実際の(クリーンアップされた)ログです。
[00:00.000]
foocorp.tasks.add_y_to_xs が送信されました。ID->#1[00:00.001]
受信タスク: foocorp.tasks.add_y_to_xs[#1][00:10.009]
foocorp.tasks.add_y_to_xs が送信されました。ID->#2[00:20.024]
foocorp.tasks.add_y_to_xs が送信されました。ID->#3[00:26.747]
受信タスク: foocorp.tasks.add_y_to_xs[#2][00:26.748]
TaskPool: 適用 #2[00:26.752]
受信タスク: foocorp.tasks.add_y_to_xs[#3][00:26.769]
受け入れられたタスク: foocorp.tasks.add_y_to_xs[#2] pid:26528[00:26.775]
タスク foocorp.tasks.add_y_to_xs[#2] は 0.0197986490093s で成功しました: なし[00:26.806]
TaskPool: 適用 #1[00:26.836]
TaskPool: 適用 #3[01:30.020]
受け入れられたタスク: foocorp.tasks.add_y_to_xs[#1] pid:26526[01:30.053]
受け入れられたタスク: foocorp.tasks.add_y_to_xs[#3] pid:26529[01:30.055]
foocorp.tasks.add_y_to_xs[#1]: X ID に Y を追加 #9725[01:30.070]
foocorp.tasks.add_y_to_xs[#3]: X ID に Y を追加 #9725[01:30.074]
タスク foocorp.tasks.add_y_to_xs[#1] は 0.0594762689434s で成功しました: なし[01:30.087]
タスク foocorp.tasks.add_y_to_xs[#3] は 0.0352867960464s で成功しました: なし
現在、トランスポートとしてRabbitMQを備えたCelery 3.1.4を使用しています。
編集ダン、ここに私が思いついたものがあります:
ダン、これが私が最終的に使用したものです:
そして、セロリ タスク デコレータ (定期的なタスクにのみ使用):
python - Celery でサブタスクを作成するにはどうすればよいですか
私はbuildings
自分のデータベースで多くをループしようとしています。各建物でapt
、その中のそれぞれの請求書を生成しbuilding
ます。Celery
これはすべて、毎月 25 日にスケジュールされたタスクで発生します。翌月分の請求書が送られてきます。chords
およびその他のサブタスクを使用できることはわかっていますがgroups
、それを 1 つの巨大な作業メカニズムに編成する方法について混乱しています。これは私がこれまでに試したことです(うまくいきません)。現在の時刻を使用してテストしcrontab
ているので、実行されていることがわかります。本番環境では、その日付を毎月 25 日に設定します。
config.py :
タスク.py :
何が起こるかbill_all_buildings
というと、それが実行され、次のように表示されます。
その後、何も起こりません。
python - django で celerybeat をデーモンとして実行する際の問題
したがって、正常に動作しており、本来の動作をテストしましたが、デーモンとして適切に実行できないようです。手始めに、私はdjangoアプリを実行しており、バックエンドとしてmongodbを使用しており、そのために必要なすべてのモジュールを持っています
現在、私はそれを正常に実行できます
問題は私のプロジェクトフォルダーで、celeryappはアプリです(チュートリアルのように単にセロリと名付けると、まったく機能しなくなりました)
だから私はファイルを作成しました
を使用して呼び出します
しかし、主な問題は、私の設定が私の Django settings.py にあるようです。
何らかの理由で、そこから私の設定を読み取らないようです。CELERY_APP = matter.celeryapp もありますが、うまくいかないようです。
mongo の代わりにデフォルトのブローカーを使用していることを示すログファイルを使用するため、これが正しくないことはわかっています。