4

django-celery開発用マシンをローカルで使用してやりたいことはすべてあります。私は Django、djcelerycelleryおよびブローカー (Amazon SQS) を実行しています。タスクを送信して機能します。

ローカルで行ったように (つまり、すべてを 1 台のマシンで) 設定できますが、タスクを別のマシンに分散したり、タスクを共有したりしたい場合はどうなりますか? これは現在のマシン (Djangodjceleryを使用celery) のコピーであり、すべて同じ SQS に接続されていますか? これはどのように作動しますか?それらがすべて同じブローカーに接続している場合、それらは「知っている」だけですか? または、このように機能しませんか?

開発で行ったように、1 台のマシンですべてを開始しても問題ありませんか (本番環境ではセロリをデーモン化します)。

4

1 に答える 1

4

Amazon SQS はシンプルなキューイング サービスです。ジョブは実行を待機し、完了するとキューから削除されます。Celery はこのキューを読み取るだけです。

Celery は、水平方向と垂直方向の両方にスケーリングできます。より多くのジョブをより高速に処理するには、セロリが必要ですか? マシンにより多くのリソースを与え、ワーカー数を増やして垂直スケーリングするか、より小さなマシンを起動して水平スケーリングします。いずれにしても、セロリ ワーカーはすべて SQS で同じキューを消費しています。インフラストラクチャの残りの部分がどのように影響を受けるかについては、セロリのジョブが何をしているかによって異なります。彼らがDBに書き込んでいる場合、ワーカーが多いほどDBの負荷が高くなるため、そのスケーリングも検討する必要があります。

1 台のマシンで「すべて」のアプローチから始めても問題ありません。アプリの需要が高まるにつれて、セロリ ワーカーをより多くのマシンに移動するか、1 つのサーバーでより多くのリソースを提供することを検討し始めることができます。

これは役に立ちますか?:)

于 2013-03-27T21:24:28.723 に答える