2016-01-10 5 views
5


最近、計算速度を向上させるために分散コンピューティングの作業を開始しました。厳しいGoogle検索と多くのSOフォーラムの後、私は自分の目的のためにセロリを選択しましたが、私は概念と用語の理解にいくつかの問題に直面しています。
worker vs process vs clientとjobとCelery Pythonモジュールのタスクexplaination

ワーカーとプロセスの主な違いは何ですか?彼らは同じか、別の文脈で違うと呼ばれていますか?それが言うセロリのドキュメントから

を説明してください:

セロリは通常、クライアントと労働者の間で を仲介するブローカーを使用して、メッセージを介して通信します。タスクを開始するために、クライアントは メッセージをキューに追加し、ブローカはそれをワーカーに配信します。

もしあれば、ここのクライアントは何ですか? (現在、私はオクタコアマシンを1台しか使用していません)

メッセージがブローカー経由で渡された場合は?プロセス間通信にバックエンドとメッセージキューを使用する理由説明してください

ここで私はそれを作ることができない大きな質問があります。私はでセロリコンソールを実行すると は:5

--concurrency

セロリワーカー-Aタスク--loglevel =情報、セロリコンソールが担当しているワーカープロセスこの平均でありません5つの異なるプロセスからなり、タスクキューを追跡します。新しいタスクがタスクキューにプッシュされると、このワーカーはタスク/ジョブを5つのプロセスのいずれかに割り当てます。???

この質問は非常に基本的かもしれませんが、理解を深めるためにいくつかのリンクやツイートをご提供ください。あなたがいる

celery worker -A tasks --loglevel=info --concurrency 5 

:事前のおかげで

私はSO、他の人へのよりよい理解のために、私の質問を編集すること自由に感じてくださいするには初心者です最初

答えて

1

最後の質問(それはより多くの私を助けるかもしれません) correct - ワーカーは5つのプロセスを制御します。作業者は5つのプロセス間でタスクを分散します。

"client"は、セロリタスクを非同期で実行するコードです。

2種類の通信があります。apply_asyncを実行すると、ブローカ(通常はrabbitmq)にタスク要求を送信します。これは基本的にメッセージキューのセットです。

作業者が作業を終えると、結果が結果バックエンドに格納されます。

ブローカと結果バックエンドはかなり離れており、最適に機能するにはさまざまな種類のソフトウェアが必要です。

両方でRabbitMQを使用できますが、一定の割合でメッセージが届くと正しく動作しません。最も一般的な組み合わせは、ブローカー用のRabbitMQと結果用のRedisです。

+0

簡単な情報をありがとう。あなたはRabbitMQをブローカーとし、Redisをバックエンドとして宣言しています。 )1.このmemcachedはどこにありますか?私はメッセージキューとしてこれを使用して多くのフォーラムを見てきました。 2)上記のセロリワーカーコマンドを2つの異なるコンソールで実行し、インタラクティブなPythonからタスクを提出すればどうなるでしょうか?私は、この特定のワーカーコンソールの使用をどのように指定するのですか? – jeldikk

+0

memcachedはRedisの代わりに使用できます。おそらくレディスが良い選択です。あなたの2番目の質問は意味をなさない。セロリのマニュアルをもう一度読んでから、SOの新しい質問をしてください – scytale

関連する問題