問題タブ [djcelery]
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 - ワーカーのウォーム シャットダウン後にセロリ タスクが認識されない
私は djcelery 開発に不慣れです。Web インターフェイスのボタンからワーカーをシャットダウンしたいと考えています。そのため、tasks.py でボタンがクリックされたときに次のタスクを呼び出しています。
ワーカーがアクティブなタスクである場合、すぐにシャットダウンされず、タスクの実行が完了するとダウンします。ただし、タスクの状態は常に「STARTED」です。ワーカーを再起動すると、タスクが再び取得されて実行されます。すでに実行されているため、タスクの状態を更新できる方法はありますか? CELERY_ACKS_LATE を True に設定しています。
更新: 私が使用しているセロリのバージョンは 3.0.9 (Chiastic Slide) で、Rabbitmq をブローカーとして使用しています。
django - result.ready()がdjangoセロリで期待どおりに機能しませんか?
特定のタスクを実行するdjangoセロリビューがあり、タスクが正常に完了した後、それをデータベースに書き込みます。
私はこれをやっています:
と、
しかし、タスクの実行が終了した後、if条件にはなりません。試してみましresult.ready()
たが、うまくいきませんでした。
編集:上記の行は同じビューにあります:
e:#データベースへの書き込み
django - ジャンゴセロリタスクの進行状況バーを表示することは可能ですか?
django celery でデータベース バックエンドを使用しています。タスク情報はcelery_taskmeta
、データベース内のテーブルに保存されます。これは私の仕事です:
私はこのようにタスクを呼び出しています:
ここで、タスクの進行状況と Django テンプレートの残り時間をユーザーに表示したいと思います。どうやってやるの?
django - Djangoセロリが起動時にpytzエラーを打ち負かす
セロリとセロリビートで開発サーバーを起動しようとすると、突然次のエラーが発生します。ある日、これは機能しますが、次の日は機能しません。これを説明できるものは何も変更していません。次のように、フォアマンとProcfile.devを使用してサーバーを起動します。
Procfile:
指示:
私が言ったように、これは決してエラーを与えませんでした。スタックトレースは以下のとおりです。
インストールしたパッケージのバージョン:
pytzを再インストールしようとしましたが、役に立ちませんでした。
これを修正する方法の提案はありますか?
編集1
Burhan Khalidの答えを試しましたが、これでIOErrorが修正されましたが、新しいエラーがスローされます。私はzoneinfoデータを貼り付けるために2つの場所を試しましたが、それらは異なるエラーを引き起こしました。これは以下で見つけることができます。
提案されたようにusr/share / zoneinfo /に貼り付けると、次のようになります。
〜/ .virtualenvs / env_name / lib / python2.7 / site-packages / pytz / zoneinfoに貼り付けた場合:
したがって、提供されたzoneinfoデータが正しくない/不完全であるようです。正しいデータはどこで入手できますか?
編集2:
Burhan Khalidの答えを答えとしてマークしましたが、私にとってはうまくいきませんでした。私がこれをしたのは、私が何か間違ったことをしたと確信していて、答えが正しいからです。この問題を修正する方法は、zoneinfoデータを別のMacBookからこのMacBookにコピーして貼り付けることです。
django - 一度に2つのタスクしか実行しないDjangoセロリ?
次のようなセロリのタスクがあります。
Djagno ビューを呼び出しました。
ユーザーは複数のファイルを選択してコピー先にコピーできます。たとえば、ユーザーが一度に 4 つのファイルを選択した場合、セロリは 2 つのタスクしか受け入れません。どうしたの?
django - Django Celery Chordが実行されない
Python の itertools を使用して大量の製品リストを生成するプログラムがあります。基本的に、単語のさまざまな組み合わせの大きなセットです。products() 関数を実行するための複数のセットがあります。私がやりたいのは、各セットを別の Celery タスクに割り当て、最後にそれらを組み合わせることで、Celery にこれを手伝ってもらうことです。私の理解では、和音はこれを行う方法です。
だから本質的に私はこれを持っています:
そして、それをサポートする 2 つの簡素化された関数:
最初は、コード タスクが celeryev に表示されていましたが、ここで参照されている問題がありました: Django Celery - Missing something but I know what? 結果はありますが、Celery が MySQL を介した結果追跡に関係するエラーを返すことについて、結果を取得できません。実際、結果のバックエンドに MySQL を使用していましたが、Redis に切り替えることでそれがなくなりました。しかし、今、私は新しい問題を抱えています。Django シェルでコードを実行すると、celeryev にタスクが表示されず、これ以上何も返されません。
基本的に Celery メッセージですが、データはありません。コードも返されず、カーソルがぶら下がったままになります。control-C を出力すると、行番号は Celery で待機しているように見えるものです。celeryevが私に仕事を与えないので、私は何を考えていません。celeryev で他のタスクが表示されることを確認しました。
関数を Celery タスクとして実行せずに正常にテストしたところ、正常に戻りました。
ショートバージョン 私のDjangoアプリで集中的なPythonタスクを支援するためにCeleryコードを取得しようとしていますが、結果を返したり、celeryevに入力したりしていないようです. Redis バックエンド。セロリ バージョン 3.0.15。ジャンゴ1.4.
django - Django 1.5、django-celery 3.0.11、およびmongodbを使用してタスクをキューに入れることができません
みんな。Djangoシェルから次のコードを実行する
と、使用Django==1.5
に問題があり ますdjango-celery==3.0.11
error: [Errno 61] Connection refused
設定.py
data_warehouse.tasks (チュートリアルからコピー)
python manage.py celery worker -l info を実行すると取得します
このコードでpythonシェルを使用してタスクを実行しようとしたとき
この予想されるエラーが発生します。
この問題は、Celery インスタンスが適切なブローカー URL を呼び出さないことに起因する可能性がありますが、まだわかりません。これについて何か考えはありますか?
解決しました!! 追加するだけ
settings.py へ
python - task_revokedハンドラーのCeleryタスクID
したがって、作業ディレクトリを作成し、そこですべての作業を行うタスクがあります。タスクはサーバーAから呼び出され、ワーカーサーバーで実行されます。
タスクが完了/キャンセルされたら、作業ディレクトリが削除されていることを確認する必要があります。
タスクが取り消されたハンドラーを追加しました。次のようになります。
私の問題は、サーバーAがタスクをキャンセルしたときに、タスクIDがないため、取り消されたハンドラーの作業ディレクトリのクリーンアップを発行できないことです。
この特定のシグナルハンドラーからタスクIDを取得する方法はありますか? 他のいくつかのSignalにはそれらがあり、これらが発行されるソースを調べましたが、何らかの理由でこのSignalにはtask_idが提供されていません。
提供されsender
たタスクにはtrace_task関数が含まれていますが{'__trace__': <function trace_task at 0x3ee8230>}
、関数自体にtask_idが必要なため、どのように使用できるかわかりません。
他のアイデアは大歓迎です。
celery - 特定の時点で実行されたセロリ タスクの数
その場で非同期に一連のセロリタスクを作成しようとしています。非同期で開始する 1000 のタスクがあり、タスクを実行するために celeryd プロセスを 1 つしか実行していないとします。これらのタスクを処理するためにセロリによっていくつのスレッドが作成されるでしょうか?
タスクキューを処理するためにセロリが自動的に開始する複数のスレッドがある場合、セロリが特定の時点で 100 スレッドのみを実行するように制限するにはどうすればよいですか。
ありがとう。
django - Django Celerybeat PeriodicTask が予想よりもはるかに多く実行されています
Django、Celery、djcelery、および PeriodicTasks に苦労しています。
Adsense のレポートを取得してライブ統計レポートを生成するタスクを作成しました。これが私の仕事です:
セロリとRabbitMQを使用しています。ここに私の設定があります:
一見するとすべてが機能しているように見えますが、ロガーをオンにして実行を観察したところ、タスクが少なくとも 4 回連続して実行されていることがわかりました。また、2 分ごとではなく、1 分ごとに実行されているようです。crontab を使用するように run_every を変更しようとしましたが、同じ結果が得られます。
スーパーバイザーを使用してセロリビートを開始しています。これが私が使用するコマンドです:
なぜ期待どおりに機能しないのかについてのアイデアはありますか?
ああ、もう1つ、日が変わった後も、最初に実行した日付範囲を引き続き使用します。そのため、日が進むにつれて、タスクの実行が開始された日の統計が取得され続けます。ある時点でタスクを手動で実行しない限り、最後に手動で実行した日付に変更されます。なぜこれが起こるのか誰か教えてもらえますか?