問題タブ [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 - crontabs とセロリビート
Python プロジェクトで、タスクが毎日特定の時間に 1 回実行される非同期タスクを開発したいと考えていました。
私はこの機能を乗り越えるさまざまな方法について多くのことを調査しましたが、機能と機能の間で非常に混乱celery beat
しcrontabs
ています。パフォーマンスの考慮事項を含め、2つの違い(ある場合)を理解するのを誰かが手伝ってくれたらうれしいです。
celery - django-celery PeriodicTask と eta フィールド
セロリと組み合わせたdjangoプロジェクトがあり、将来のある時点で、再発するかどうかにかかわらず、タスクを動的にスケジュールできるようにする必要があります。すでにスケジュールされているタスクを削除/編集する機能が必要です
したがって、最初にこれを達成するために、DatabaseSchedulerでdjango-celeryを使用して、いくつかのPeriodicTasks(有効期限付き)をデータベースに保存し始めました。
このようにして、アプリを閉じてもう一度起動しても、スケジュールはまだ残っています
eta を利用できず、将来のある時点でタスクをスケジュールできないため、私の問題はまだ残っています。etaでタスクを動的にスケジュールすることは何とか可能ですか?
私の2番目の質問は、たとえば2015-05-15 15:50:00に実行するようにスケジュールするなど、1回限りのタスクをスケジュールできるかどうかです(そのため、etaを使用しようとしています)
最後に、数千の通知をスケジュールしますが、セロリ ビートはこの数のスケジュールされたタスクを処理できますか? それらのいくつかは一度限りですが、他のものは定期的ですか? それとも、 APSchedulerなどのより高度なソリューションを使用する必要がありますか?
ありがとうございました
django - 本番環境で実行されていないセロリ
本番環境でセロリとセロリビートを実行しようとしています。現在の django アプリでは、コマンド「celery -A Gorgon worker」および「celery -A Gorgon Beat -l debug --max-interval=10」を使用してテストおよび実行できます。また、virtualenv を介して実行しています。また、タスク ブローカーとして redis を使用しています。
アプリ全体が gunicorn サーバー上で実行されています。しかし、プロセスをデーモン化しようとすると、111 接続エラーで失敗します。
https://github.com/celery/celery/tree/3.0/extra/generic-init.dから必要なスクリプトをディレクトリ /etc/init.d に追加しました
/etc/defaults 内のスクリプトについては、次のようになります。
私のcelerydスクリプトは次のとおりです
私のセロリビートスクリプトは
/home/ubuntu/sites/virtualenv の現在の仮想環境を使用して、セロリのセットアップをデーモンとして実行するにはどうすればよいですか
python - 本番環境でスーパーバイザーを使用したセロリ ビート
スーパーバイザーを使用して仮想環境からセロリビートを実行しようとしています。スクリプトが機能していないようです
すべてのスーパーバイザー スクリプトはディレクトリ/etc/supervisord
にあります ファイルとファイルを含むsupervisord.conf
ディレクトリがありますconf.d
Gorgon-celery.conf
私のsupervisord.conf
ファイルは次のようになります。
私のGorgon-celery.conf
ファイルは次のようになります。
最後にスーパーバイザーに、次のコマンドを使用しています。sudo supervisord -c /etc/supervisord/supervisord.conf
python - Django アプリケーションの起動時に無期限に実行されるシングルトン セロリ タスクを作成するにはどうすればよいですか?
現在@sharedtask
、次のコードに正確に従う があります:
http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html#id1
そして、次のスケジューラー設定:
しかし、私の 2 つのワーカーはタスクを複数回実行しているように見えます。これはおそらくワーカーが同時スレッドを持っているためでしょうか? タスクが 1 つのワーカーの 1 つのスレッドによって 1 回だけ実行されるようにするにはどうすればよいですか?
シェルで見ているものの例:
編集:Procfile
herokuで使用しています。
python - Celery、AttributeError:「モジュール」オブジェクトには属性「celeryconfig」がありません
Python-Celery を介して定期的なタスクをセットアップしようとしています。以下は私のプロジェクト構造です:
セロリ.py
セロリconfig.py
タスク.py
コマンドでセロリワーカーを起動しようとすると
次のエラーが表示されます:-
Periodic タスクに必要なコードを celeryconfig.py から削除すると、Worker は正常に動作します。つまり、次の部分です。
助けてください!
django - セロリビートメッセージがrabbitmqに届かない
セロリビートで特定のタスクを実行するのに多くの問題があります。以下のようないくつかのタスクはbeatによってトリガーされますが、メッセージはrabbitmqによって決して受信されません.
私のdjango設定ファイルには、次の定期的なタスクがあります
10 UTC ビートで、期待どおりにタスクが実行されます
しかし、このメッセージはrabbitmqに到着することはありません(私はrabbitmqのトレースモジュールを使用して受信メッセージを追跡しています)。正常に実行されているように見える他のタスクがいくつかありますが、上記のような特定のタスクは実行されません。cron.tasks.update_locations.delay() を使用してdjangoでタスクを手動で実行すると、問題なくタスクが実行されます。私のRabbitmqはbeatとは別のサーバーにあることに注意してください。
メッセージが実際にrabbitmqによって送信および/または受信されたことを確認するためにできることはありますか? これらのタスクを確実に実行するようにスケジュールするより良い方法または他の方法はありますか?
django - Celerybeat サービスが起動しない
セロリをサービスとして実行しようとしていますが、CELERYBEAT_OPTS パラメーターに問題があります。セロリサービスを問題なく開始でき、次のようなコマンドラインからセロリビートを問題なく開始できます。
しかし、次のように celerybeat サービスを開始すると:
始まらない。
/etc/default/celerybeat にある私の celerybeat 設定ファイルは次のとおりです。
最も奇妙な点は、構成ファイルに記載されているように、CELERYBEAT_OPTS 行をコメントアウトすると、service コマンドを使用してサービスを正常に開始できることです。そのため、構成ファイルで CELERYBEAT_OPTS="-S djcelery.schedulers.DatabaseScheduler" を指定すると、サービスが開始されません。ここで何が起こっているのか、またはどのようにトラブルシューティングできるのか、誰にも手がかりがありますか? ありがとうございました。
redis - Redis ブローカーを使用する Celery ワーカーが Django タスクを実行できない
最近、自分の Reddit クローン (ubuntu 14.04 LTS) を開発することで、Python(2.7)/Django(1.5) を学習しています。Celery(3.1) と Redis をミックスに組み込み、それを使用して定期的にランキング アルゴをタスクとして (ローカルセットアップで) 実行しようとしています。しかし、残念ながら、この単純なタスクを一度も実行することはできません! 私が間違っていることを見つけるのを手伝ってもらえますか?
ここに私のディレクトリ構造があります:
Celery.py :
settings.pyへの追加は以下の通りです。migrate
インストールされたアプリに「djcelery」を追加した後に実行したことに注意してください。
__init__.py :
タスク.py :
ターミナルで次のコマンドを実行して、ワーカーを開始しています。celery -A unconnectedreddit worker -l info
私が得る出力は次のとおりです。
それでおしまい。このタスクを 30 秒ごとに定期的に実行するように設定しました (私の CELERYBEAT_SCHEDULE を参照してください)。しかし、私のコードは 1 回も実行されません。私の reddit クローンのランキングはまったく変わりません。このセットアップに欠けているものを指摘できる専門家はいますか?