1

多くのブログ投稿を読んだ後、中規模の Django プロジェクトのために crontab から Celery に切り替えることにしました。私が理解していないことがいくつかあります:

1-RabbitMQ 専用のマイクロ EC2 インスタンスを開始する予定です。小規模から中規模の負荷の高いタスクにはこれで十分でしょうか? (定期的な E メールを Amazon SES に送信するなど)。

2-タスクの計算、タスクの計算はDjangoサーバーまたはrabbitMQサーバーで行われますか(rabbitMQが別のサーバー上にあると仮定します)?

3- システムを拡張する必要があり、ロード バランサーの背後に 2 つ以上のアプリケーション サーバーが必要な場合、これら 2 つのセロリ マシンは同じ rabbitMQ vhost に接続する必要がありますか? アプリケーション サーバーがカーボン コピーであり、タスクが同じであり、すべてがデータベース レベルで同期されていると仮定します。

4

1 に答える 1

1
  1. この質問に対する答えはわかりませんが、適切に構成できることは間違いありません (たとえば-c1、単一のプロセス ワーカーを使用して多くのメモリを使用しないようにしたり、eventlet/gevent プールを使用したりします) --autoscale。オプションも参照してください。ここでは、ブローカー トランスポートの選択も重要です。ポーリングしていないものの方が CPU 効率が高くなります (rabbitmq/redis/beanstalk)。

  2. コンピューティングはワーカー上で行われ、ブローカーはメッセージの受け入れ、ルーティング、配信 (および必要に応じてメッセージをディスクに永続化する) のみを担当します。

  3. 追加のワーカーを追加するには、これらは実際に同じ仮想ホストに接続する必要があります。アプリケーションに個別のメッセージ バスが必要な場合にのみ、個別の仮想ホストを使用します。

于 2012-12-06T15:45:23.733 に答える