web-dev-qa-db-ja.com

セロリワーカーを別のマシンにセットアップする方法

セロリは初めてです。1台のサーバーをインストールして実行する方法は知っていますが、タスクを複数のマシンに分散する必要があります。私のプロジェクトでは、セロリを使用して、Webフレームワークに渡すユーザー要求を別のマシンに割り当て、結果を返します。ドキュメントを読みましたが、複数のマシンをセットアップする方法については触れられていません。何が欠けていますか?

47
Evan Gui

私の理解では、アプリはリクエストをキューイングシステム(rabbitMQなど)にプッシュし、その後、さまざまなマシンで任意の数のワーカーを開始できます(タスクを送信したアプリと同じコードにアクセスできます)。彼らはメッセージキューからタスクを選び出し、それらに取り掛かります。完了すると、墓石データベースが更新されます。

この結果、複数のワーカーを開始するために特別なことを行う必要はありません。それらを別々の同一の(同じソースツリー)マシンで起動するだけです。

メッセージキューを持つサーバーは、ワーカーを備えたサーバーと同じである必要はなく、ジョブを送信するマシンと同じである必要もありません。メッセージキューの場所をceleryconfig.pyおよびすべてのマシンのすべてのワーカーは、キューからジョブを取得してタスクを実行できます。

45
Noufal Ibrahim

私がそれをデプロイした方法は次のとおりです:

  1. Djangoプロジェクトをherokuインスタンスに複製します(これによりフロントエンドが実行されます)
  2. rabitMQをアドオンとして追加して設定します
  3. Djangoプロジェクトを別のherokuインスタンスにコピーします(ワーカーのように呼び出します)。ここでセロリタスクを実行します
0
user2471214