問題タブ [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 - 不明なタスクから Celery の「task_id」から結果を取得する
以前に実行されたタスクがわからない場合、タスクの結果を取得するにはどうすればよいですか? セットアップは次のとおりです。次のソース(「tasks.py」)が与えられます:
RabbitMQ 3.3.2 をローカルで実行している場合:
Celery 3.1.12 がローカルで実行されている場合:
次に、メソッドをインポートして、「task_id」で結果を取得できます。
次の例では、これらのステップをプロセス間で分割します。あるプロセスでは、次のように「task_id」を取得します。
そして、別のプロセスで同じ 'task_id' を使用する場合 (コピーして別の REPL に貼り付けるか、別の HTTP 要求で)、次のようにします。
そして、私がそうする場合、別のプロセスで:
どのタスクが結果を生成しているかを事前に知らなくても、結果を取得できるようにしたいと考えています。私の実際の環境では、この task_id をクライアントに返し、HTTP リクエストを介してジョブのステータスを照会できるようにする予定です。
python - Celery チャンクがタスクを実行しない
celery_tasks.py
セロリconfig.py
celery_test.py
私はこの方法でワーカーを開始します:
「印刷結果」でこれを取得しています
しかし、ワーカー コンソールには、処理されたタスクが表示されません
そのようにタスクを実行すると、すべて問題ありません
複数のIDを順番に行うのではなく、同じタスクに送信することを最適化しようとしています(利点があるかどうかはわかりません)。
私は何が欠けていますか?
どうもありがとう
python - AsyncResult(task_id) は、タスクが開始された後でも「PENDING」状態を返します
プロジェクトでは、実行時間の長いタスクの task.state をポーリングし、その実行ステータスを更新しようとしています。開発では機能しましたが、プロジェクトを本番サーバーに移動すると機能しません。タスクが花で開始されたことがわかっても、「PENDING」が表示され続けました。ただし、タスクが終了したときに更新された結果を取得できます。これは、task.state == 'SUCCESS' の場合です。私は本番環境でpython 2.6、Django 1.6、およびCelery 3.1を使用し、結果のバックエンドAMQPを使用しています。
別のメモとして、花は常に労働者のステータスをオフラインで表示しますが、タスクのステータスは正しいものでした。セロリ イベント 3.1.12 (Cipater) を使用すると、正しいワーカー ステータスが表示されます。
python - 通常のセロリコマンドでセロリをデーモンとして実行する方法
セロリタスクを使用してバックグラウンドでcsv処理を実行しているdjangoアプリがあるため、このコマンドでrabbitmq-server
rabbitmq sudo apt-get install rabbitmq-server
-serverがインストールされ、正常に実行されました。
tasks.py
そして、アプリ内のモジュールにいくつかのセロリタスクコードがあり、以下のようにセロリを実行しています
これは正常に動作し、csvファイルをバックグラウンドで正常に実行していましたが、上記のコマンドをデーモン化したいだけで、デーモン化するオプションについて検索しましたが-D
、上記のコマンドをデーモン化するために渡す引数が見つかりませんでした。上記のコマンドをデーモン化してセロリを実行できる方法はありますか?
django - スーパーバイザーを使用してセロリをデーモンとして実行しても機能しない
セロリ機能を備えたdjangoアプリがあるので、以下のようにセロリを正常に実行できます
しかし、デーモンとして実行する必要があるという既知の事実として、フォルダーcelery.conf
内に以下のファイルを書きました/etc/supervisor/conf.d/
しかし、スーパーバイザーを次のように更新しようとすると、supervisorctl reread
からsupervisorctl update
メッセージが表示されましたsupervisorctl status
だから私はworker.log
ファイルに行き、以下のようなエラーメッセージを見ました
C_FORCE_ROOT
では、スーパーバイザーの conf ファイル内で環境変数として設定したにもかかわらず、なぜ文句を言って いるのでしょうか? 上記のconfファイルで何が間違っていますか?
python - Celery 未登録タスク KeyError
ターミナルで次のコマンドを実行してワーカーを起動します。
次に、セロリが未登録のタスクを受け取り、トリガーしたことを示す長いループ エラー メッセージが表示されます。
これに関する問題は、それcel_test.grp_all_w_codes.mk_dct
が存在しないことです。cel_test.grp_all_w_codes
実際、タスクは言うまでもなく、モジュールすらありませんmk_dct
。数日前に一度ありましたが、その後削除しました。.pyc
ファイルが浮かんでいるのではないかと思ったのですが、ありません。また、エラーをスローしているタスクへの参照がコード内に 1 つも見つかりません。コンピューターをシャットダウンし、rabbitmq サーバーを再起動して、何かへの参照がメモリに残っているのではないかと考えましたが、役に立ちませんでした。
ここで何が問題なのか、何が欠けているのか、誰にも分かりますか?