16

celeryd-multi のドキュメントには、次の例があります。

# Advanced example starting 10 workers in the background:
#   * Three of the workers processes the images and video queue
#   * Two of the workers processes the data queue with loglevel DEBUG
#   * the rest processes the default' queue.
$ celeryd-multi start 10 -l INFO -Q:1-3 images,video -Q:4,5 data
    -Q default -L:4,5 DEBUG

(ここから: http://docs.celeryproject.org/en/latest/reference/celery.bin.celeryd_multi.html#examples )

上記の例のように、1 つのホスト上で複数のワーカーが同じキューを処理するのが良い理由の実用的な例は何ですか? それが同時実行の設定ではないでしょうか。

より具体的には、次の 2 行 (A と B) の間に実際的な違いはありますか?

A:

$ celeryd-multi start 10 -c 2 -Q data

B:

$ celeryd-multi start 1 -c 20 -Q data

この実際的な違いを理解していないために、タスク キューに関する貴重な知識が欠けているのではないかと心配しています。

ありがとう!

4

1 に答える 1

8

上記の例のように、1 つのホスト上で複数のワーカーが同じキューを処理するのが良い理由の実用的な例は何ですか?

答え:</p>

したがって、次の場合は、同じマシン ノードで複数のワーカー インスタンスを実行することをお勧めします。

  • マルチプロセッシング プールを使用していて、メッセージを並行して消費したい場合。多くのプール ワーカーで単一のインスタンスを実行する代わりに、複数のワーカー インスタンスを使用した方がパフォーマンスが向上したと報告する人もいます。

  • eventlet/gevent (および悪名高い GIL と「スレッド」) プールを使用しており、複数の CPU コアでタスクを実行したい。

参考:http://www.quora.com/Celery-distributed-task-queue/What-is-the-difference-between-workers-and-processes

于 2014-05-20T15:44:58.320 に答える