問題タブ [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 - Celeryでタスクのステータスを確認するにはどうすればよいですか?
タスクがセロリで実行されているかどうかをどのように確認しますか(具体的には、私はcelery-djangoを使用しています)?
ドキュメントを読み、グーグルで検索しましたが、次のような呼び出しが表示されません。
私のユースケースは、トランスコーディング用の外部(java)サービスがあることです。トランスコードするドキュメントを送信するときに、そのサービスを実行しているタスクが実行されているかどうかを確認し、実行されていない場合は、それを(再)開始します。
私は現在の安定したバージョン-2.4を使用していると思います。
celery - セロリ:タスクごとの同時実行制限(タスクごとのワーカー数)?
Celeryでタスクごとのレベルで同時実行数 (同時ワーカー数) を設定することは可能ですか? CELERYD_CONCURRENCY
(デーモン全体の同時実行性を設定する)もっときめ細かいものを探しています。
使用シナリオは次のとおりです。非常に異なるパフォーマンス特性を持つさまざまなタイプのタスクを実行する単一の celerlyd があります。高速なものもあれば、非常に遅いものもあります。できる限り多くのことをできる限り迅速に実行したい場合もあれば、常に 1 つのインスタンスのみが実行されるようにしたい場合もあります (つまり、同時実行数 1)。
python - Celery と Redis バックエンドの問題
私は現在、セロリとredisバックエンドを使用して、電子メールの送信、ソーシャルデータのプル、クロールなどの一連の非同期タスクを実行するシステムをセットアップしています。すべてがうまく機能していますが、システムを監視する方法 (つまり、キューに入れられたメッセージの数) をグループで考えています。私はセロリのソースを調べ始めましたが、ここに質問を投稿することにしました: まず、ここに私の設定があります:
最初にやろうとしているのは、キューにあるメッセージの数を監視することです。舞台裏では、redis バックエンドがリストからプッシュ/ポップしているだけだと思いますが、コードでそれを見つけることができないようです。そこで、約 100 のタスクを開始して redis でそれらを見つけようとしているシミュレーションをモックアップします。私の celeryd は次のように実行されています。 celery.log したがって、一度に 4 つの同時ワーカーのみを使用する必要があります ..... わからないことが 2 つあります。
キューに入れられている数を取得するためのタスクが見つからないようです (技術的には、4 つの同時タスクしかサポートしていないため、96 にする必要があります)。
問題 2
誰かが私のためにこれを説明できれば、それは素晴らしいことです.
python - クラス メソッドをセロリ タスクとして使用する
@task デコレータを使用してマークアップし、django-celery タスクとしてクラスのメソッドを使用しようとしています。Anand Jeyahar の質問に、同じ状況がここに記載されています。こんな感じです
a.foo.delay(bar)
問題は、このようにクラスインスタンスを使用してもfoo
、少なくとも2つの引数が必要であり、self
ポインターが見つからないことです。
詳しくは:
- 継承のため、クラスをモジュールに変換できません
- メソッドはクラスメンバーに強く依存するため、静的にすることはできません
- @taskデコレータでクラスをタスクとしてマークすると、クラスがタスク自体になり、メソッド選択のキーとしていくつかの引数を使用して、メソッドからメソッドを実行できる可能性があります
run()
が、それはまさに私が望むものではありません。 - クラスのインスタンスを作成し、それを引数としてメソッドに渡すと、メソッドをセロリタスクとしてではなく、通常のメソッドとして (つまり、テスト中に)実行
self
する方法が変わります。 - たとえば、コンストラクターからタスクを動的に登録する方法を見つけようとしましたが、セロリはワーカー間でコードを共有するため、不可能に思えます。
ご協力いただきありがとうございます!
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 - 外部プロセスとしてではなくdjangoでセロリを実行していますか?
セロリを食べてみたい。Spring のクォーツに似た、crontab のようなタスクをスケジュールする簡単な方法に興味があります。
celeryd
セロリのドキュメントから、デーモンプロセスとして実行する必要があることがわかります。別の外部プロセスを実行することを控え、単にこれを私の django インスタンスに埋め込んで実行する方法はありますか? 現時点では作品を配布することに興味がないので、シンプルに保ちたいと思います。
sms - セロリタスクを特定の期間に実行するようにスケジュールできますか?
私はサブスクリプションに基づいてユーザーにSMSを送信する組織で働いています。私のスタックには、Django、Celery、Redis、RabbitMQ、PostgreSQL、Apache、nginx、Kannelがあります。この環境では、すべてのSMSサービスプロバイダーには、SMSを送信できる一定の期間があります。
キャリアのWebサービスに請求を要求するセロリタスクがあるとします。請求が成功した場合、SMSを送信する必要があります。このタスクを特定の期間、たとえば午前8時から午後6時の間に送信するようにスケジュールする方法はありますか。 ?イータと有効期限を指定できることは知っていますが、SMSを送信する必要があるため、タスクを期限切れにしたくないので、翌日に送信します
python - タスクの実行時にセロリが KeyError を返すのはなぜですか?
私はこのkeyErrorを取得し続けます。タスク関数に文字列と id (整数) を送信しているので、シリアル化の問題ではないと思います。また、キーエラーは内容ではなく、関数自体へのパス上にあると言います。助けてください。
Tasks.py
関連する設定
セロリの出力:
【業務内容】
django - Django-celery IntegrityError 列名が一意ではありません
セロリの定期的なタスクのフィールドを事前に入力するために使用されるrsync構成のように機能するこの単純なモデルがあります。モデルを介して新しいrsync構成を初めて作成すると、すべて問題なく、新しい定期的なタスクが問題なく作成されます。タスク引数などのタスク フィールドを変更する特定のフィールドを変更しようとすると、「IntegrityError 列名が一意ではありません」というメッセージが表示されます。これはモデルの保存方法と関係があるように感じますが、方法がわかりません。正しく理解する。誰かがいくつかのアイデアを得ましたか?
ここにモデルがあります:
そして、これが admin.py フォームです。