問題タブ [celery-task]
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 - スレッド内の任意の場所で現在のセロリ タスク ID を取得する
どのタスクにいるのかわからないまま、実行中のタスク内でタスク ID を取得したい (そのため、https://stackoverflow.com/a/8096086/245024を使用できません) 。
私はそれが次のようなものであることを望みます:
このパターンはさまざまなタスクで返されるため、すべての内部メソッド呼び出しにタスク コンテキストを適用したくありません。
1 つのオプションとして、スレッド ローカル ストレージを使用することもできますが、その場合、タスクの開始前に初期化し、終了後にクリーンアップする必要があります。
もっと簡単なものはありますか?
celery - オブジェクトをメモリにロードし、セロリワーカーの異なる実行間で共有する方法は?
3 クラスタ マシンで celery + rabbitmq をセットアップしました。ファイルのデータに基づいて正規表現を生成し、その情報を使用してテキストを解析するタスクも作成しました。ただし、ファイルの読み取りプロセスは、as タスクの実行ごとではなく、ワーカーのスポーンごとに 1 回だけ実行されることを望みます。
上記のコードでは、ファイルを開き、ワーカーごとに 1 回だけ出力を文字列に読み取り、タスク analyse_json で文字列を使用する必要があります。
どんな助けでも大歓迎です、
ありがとう、アミット
java - JavaなどのPython以外の言語からセロリタスク遅延関数を呼び出す方法は?
3 クラスタ マシンで celery + rabbitmq をセットアップしました。ファイルのデータに基づいて正規表現を生成し、その情報を使用してテキストを解析するタスクも作成しました。
次のPythonコードを使用して、このタスクを非常に簡単に呼び出すことができます:-
ただし、今は Python ではなく Java から同じ呼び出しを行いたいと考えています。同じことを行う最も簡単な方法が何であるかはわかりません。
AMQP ブローカーにメッセージを送信するために、このコードを作成しました。コードは正常に実行されますが、タスクは実行されません。実行するタスクの名前を指定する方法がわかりません。
} }
これは rabbitMq のエラーログの出力です:-
どんな助けでも大歓迎です。
ありがとう、アミット
python - `ClassTask` mixin の Celery Task のサブクラス化
私はCeleryを初めて使用し、これは(1)他の場所で回答されている可能性がある(そうであれば、回答が見つからなかった)、または(2)目的を達成するためのより良い方法があるかもしれないという事実で私の質問を前置きします私が直接求めているものよりも。
また、私は を認識していますが、探しているものを完全には達成していませんcelery.contrib.methods
。task_method
私の目的
クラス全体を Celery タスクに変えるクラス mixin を作成したいと思います。たとえば、以下のコードのようなもので表される mixin (現在は実行されません):
を使用する場合とは異なり、タスクがキューに入れられて呼び出される前に、クラスを完全にインスタンス化したくtask_method
ありません。.delay()
むしろ、関連する初期化パラメーターとともにクラス名を非同期プロセスに渡すだけです。次に、非同期プロセスは、クラス名と指定された初期化パラメーターを使用してクラスを完全にインスタンス化.run_now()
し、インスタンス化されたオブジェクトで何らかのメソッド (たとえば、) を呼び出します。
ユースケースの例
私が必要とする mixin の使用例としては、電子メールの作成と非同期的な送信があります。
上記のコードは、 を呼び出すことにより、非同期 Celery プロセスで電子メールを送信しますWelcomeEmail.enqueue(recipient_address, template_name, template_context)
。電子メールをプロセス内で同期的に送信するには、 を呼び出しWelcomeEmail(recipient_address, template_name, template_context).send()
ます。
質問
- Celeryフレームワーク内で私がやろうとしていることは非常に間違っているという理由はありますか?
- ミックスインを構成して、私が提案したものよりも Celery-onic にするためのより良い方法はありますか (より良い属性名、異なるメソッド構造など)?
- 私が説明したように、ユースケースでミックスインを機能させるために何が欠けていますか?
django - Django 1.6 + RabbitMQ 3.2.3 + Celery 3.1.9 - セロリ ワーカーが次のように停止するのはなぜですか: WorkerLostError: Worker exited prematurely: signal 11 (SIGSEGV)
これは非常によく似た問題に対処しているようですが、十分な洞察は得られません: https://github.com/celery/billiard/issues/101 非 SQLite データベースを試すのは良い考えのようです。 ..
django アプリを使用した簡単なセロリのセットアップがあります。私のsettings.py
ファイルでは、次のように実行するタスクを設定しました。
ここの指示に従いました: http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html
2 つの新しいターミナル ウィンドウを開いて、次のようにセロリ プロセスを実行できます。
ONE - スケジュールされたタスクに必要で、タスクをキューに入れるセロリ ビート プロセス:
TWO - タスクをキューから取り出して実行するセロリ ワーカー:
ただし、タスクが送信されると、約 50% の時間でワーカーがタスクを実行し、残りの 50% の時間で次のエラーが発生するようです。
Mavericks を実行している Macbook Pro で開発しています。
セロリ バージョン 3.1.9 RabbitMQ 3.2.3 Django 1.6
私はdjango-celery 3.1.9を使用しており、djceleryアプリを有効にしていることに注意してください。
python - セロリタスク完了のジャンゴ通知
大きなcsvをインポートするdjangoのモジュールのセロリから始めています。ユーザーがファイルとその他のフィールドを指定すると、csv がチェックされてセロリに送信されます。では、通知はどうすればよいのでしょうか。ユーザーがページを離れることができるようにしたいが、タスクが完了すると何らかの通知を受け取ります。すべての行をグループに入れ、コードを使用して django ビューまたは URL をコールバックし、タスクの完了に関するポップアップ通知をユーザーに送信することを計画しています。このようにして、ポーリングを回避しようとしています。
これは機能し、これは正しい方法でしょうか?
python - セロリの花 - 以前にキャッチしたタスクをロードするにはどうすればよいですか?
タスクの監視にセロリの花を使い始めましたが、魅力的に機能しています。ただし、花の再起動後に監視対象のタスクに関する情報を「リロード」するにはどうすればよいですか? redis をブローカーとして使用しています。サービス (またはサーバー) が予期せず再起動した場合でも、タスクをチェックするオプションが必要です。
前もって感謝します