問題タブ [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 - 複数の環境で大規模なタスクをサポートするためにキュー/ワーカー構造をレイアウトする方法は?
Python/Django/Celery ベースの展開ツールの場合、次のセットアップがあります。
- 現在、デフォルトの Celery セットアップを使用しています。(「セロリ」と呼ばれる 1 つのキュー + 交換。)
- キューの各タスクは、展開操作を表します。
- 環境の各タスクは、(非常に) 時間がかかる可能性がある同期フェーズで終了します。
次の仕様を満たす必要があります。
- 並行性 : 複数の環境のタスクを同時に実行する必要があります。
- ロック:各環境で同時に実行されるタスクは最大で 1 つです (つまり、環境ロック)。
- スループットの最適化: 1 つの環境に複数のタスクがある場合、それらの同期フェーズを組み合わせて最適化することができます。そのため、タスクが終了間近になった場合、この環境のキューで待機している新しいタスクがあるかどうかを確認し、ある場合は同期フェーズをスキップする必要があります。
これを実装するための好ましい方法は何ですか?
いくつかの考え:
- 環境ごとに 1 つずつ、複数のキューを設定する必要があると言えます。また、N 個のセロリ ワーカーがそれぞれ 1 つのキューを排他的に処理する必要があります。(これで仕様 1+2 は解決されます。)
しかし、複数のセロリ ワーカーが異なるキューを排他的にリッスンするにはどうすればよいでしょうか? - 環境のキューで待機しているタスクが他にもあることを知る明確な方法はありますか?
python - Celery の PeriodicTask run() メソッドへの独自のパラメーター
私は小さな Django アプリケーションを書いています。モデル オブジェクトごとに、一定の間隔で実行される定期的なタスクを作成できるはずです。私はこれにCeleryアプリケーションを使用していますが、1つのことを理解できません:
それから私は次のことをしています:
最初の呼び出しは成功しましたが、エラーを返す他の定期的な呼び出し - TypeError: run() は、celeryd サーバーでキーワード以外の引数を 2 つ (1 つ指定) 取ります。独自のパラメーターを PeriodicTask に渡すことはできますrun()
か?
python - celerydの実行中にエラーが発生しました
私はこの質問(および回答)を投稿しているので、将来誰かがこの問題を抱えている場合は、グーグルで検索できるようになります。
次のようにDjangoでcelerydを実行しようとしている場合:
起動直後に次のエラーが発生する場合があります。
問題を解決するためにどこに行くべきかについての本当の手がかりがない、かなり不可解なエラーメッセージ。今日のようにこのエラーに多くの時間を無駄にしないように、答えについては以下を参照してください:)
python - この__import__機能は正しいですか?
、という名前のパッケージがありjiva_tasks
、これをcelery経由でインポートしようとしていCELERY_IMPORTS
ます(celeryconfigの属性を使用します。celeryが使用しているimportステートメントは次のとおりです。
奇妙なことに、この構文を使用すると、モジュールは2回インポートされます。1回はasjiva_tasks
で、もう1回はas jiva_tasks.
(最後にピリオドがあります)です。さて、セロリが空のリストではなくグローバルで渡される可能性は高いですが、これは私には壊れているようです。間違った引数が与えられたとしても__import__
、有効なpythonモジュール名ではないものをインポートするのは奇妙に思えます。
これを修正する方法は渡すglobals
ことですが、なぜこの結果が得られるのかを理解したいと思います。これはバグですか、それともどのように機能しているかについて私が理解していないことがあり__import__
ますか?
更新:を使用すると、正常に動作しているようimportlib
です。
アップデート2:行が実行される直前のsys.meta_path
とは次のとおりです。sys.import_path
__import__
異常なことがあるようには思えません。しかし、インポートしているパッケージがsetuptoolsのdevelopコマンドを使用してインストールされていることに気づきました。それは違いを生みますか?
messaging - AMQPとWebsphereMQ
キューイング用にAMQPをサポートするアプリケーションに取り組んでいます。一部のクライアントはWebsphereMQを使用しています。私は、これら2つのプロトコルが機能的にどのように互換性があるかを大まかに疑問に思っています。私はセロリを使用しています。これにより、Websphere MQバックエンドを記述できる限り、下位レベルのものを抽象化できるはずです。私が理解しようとしているのは、これがどれほど難しいかということです。
Websphere MQはAMQPの機能のスーパーセットを提供しますか?どちらかが私の人生を困難にするかもしれない「特徴」を持っていますか?
python - Celery - 現在のタスクのタスク ID を取得する
タスク内からタスクの task_id 値を取得するにはどうすればよいですか? これが私のコードです:
アイデアは、タスクの新しいインスタンスを作成するときにtask_id
、タスク オブジェクトから を取得するというものです。次に、タスク ID を使用して、タスクが完了したかどうかを判断します。タスクの完了後にファイルが「クリーンアップ」され、存在する場合と存在しない場合があるため、値でタスクを追跡したくありません。path
上記の例では、どのように値を取得しますcurrent_task_id
か?
python - Django Celery の実装 - OSError : [Errno 38] 関数が実装されていません
django-celery をインストールし、ワーカーサーバーを起動しようとしましたが、機能が実装されていないという OSError が表示されます。VPS で CentOS リリース 5.4 (Final) を実行しています。
私は完全にめちゃくちゃですか、これを解決する簡単な方法はありますか?
django - Django-Celeryを本番環境で実行
DjangoWebアプリケーションといくつかのDjango-Pistonサービスを構築しました。ユーザーはWebインターフェースを使用して、WebサービスにPOSTされたデータを送信し、そのWebサービスはDjango-celeryを使用してバックグラウンドタスクを開始します。
manage.pyを使用すると、開発環境ですべてが正常に機能します。今、私はこれを適切なApacheサーバー上の本番環境に移行しようとしています。WebアプリケーションとWebサービスは本番環境では正常に機能しますが、celerydをデーモンとして起動すると深刻な問題が発生します。これらの指示に基づいて:http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#running-the-worker-as-a-daemon celeryconfig.pyファイルを作成し、 / usr / binディレクトリ(これはcelerydが私のarch linuxサーバー上の場所です)。
ただし、コマンドラインからcelerydを起動しようとすると、次のエラーが発生します。
ここからどこへ行くのかわからない。以下は、この問題に関連する私のsettings.pyセクションです。
python - celery-djangoが設定を見つけることができません
非同期タスクを実行するためにCeleryを使用するDjangoプロジェクトがあります。私はWindowsXPマシンで開発を行っています。
Djangoサーバー(python manage.py runserver 80
)の起動は正常に機能しますが、Celery Daemon(python manage.py celeryd start
)を起動しようとすると、次のエラーで失敗します。
ImportError:設定をインポートできませんでした'src.settings'(sys.pathにありますか?構文エラーがありますか?):src.settingsという名前のモジュールがありません
sys.pathには「C:\ development \ SpaceCorps \ src」が含まれているため、このモジュールが見つからない理由がわかりません。
デーモンの起動からの完全な出力は次のとおりです。
python - Celery を使用してすべての保留中のタスクを含むダッシュボードを作成するにはどうすればよいですか?
保留中のすべてのタスクを監視できる場所が必要です。
タスクとして登録された関数/クラスについて話しているのではなく、表示できる実際のスケジュールされたジョブ: name、task_id、eta、worker など。
Celery 2.0.2 と djcelery を使用して、ドキュメントに「inspect」を見つけました。私は試した:
しかし、それは永遠にハングアップしますdump = i.scheduled()
。
それ以外の場合はすべてが機能するため、奇妙です。
Ubuntu 10.04、django 1.0、および virtualenv を使用しています。