1

ウォッチャーを構成するとき、監視の下にこれらの両方の設定を含める目的は何ですか:

singleton = True
numprocess = 1

ドキュメントには、設定singletonには次の効果があると記載されています。

シングルトン:

True に設定すると、このウォッチャーは最大で 1 つのプロセスを持ちます。デフォルトはFalseです。

私はそれを指定する必要性を否定するものとして読みnumprocessesましたが、githubリポジトリでは例を提供しています:

https://github.com/circus-tent/circus/blob/master/examples/example6.ini

ここにも含まれており、両方が指定されています。

[circus]
check_delay = 5
endpoint = tcp://127.0.0.1:5555
pubsub_endpoint = tcp://127.0.0.1:5556
stats_endpoint = tcp://127.0.0.1:5557
httpd = True
debug = True
httpd_port = 8080

[watcher:swiss]
cmd = ../bin/python
args = -u flask_app.py
warmup_delay = 0
numprocesses = 1
singleton = True
stdout_stream.class = StdoutStream
stderr_stream.class = StdoutStream

だから私は彼らが何か違うことをして、何らかの形で協力していると思いますか?

4

1 に答える 1

0

numprocess特定のウォッチャーのプロセスの初期数です。あなたが提供した例では、に設定されて1いますが、ユーザーは通常、必要に応じてさらにプロセスを追加できます。

singleton特定のウォッチャーに対して実行されるプロセスの最大数のみを許可するため、1プロセス数を動的に増やすことは禁止されます。

サーカス テスト スイートからの以下のコードは、それをよく説明しています::

@tornado.testing.gen_test
def test_singleton(self):
    # yield self._stop_runners()
    yield self.start_arbiter(singleton=True, loop=get_ioloop())

    cli = AsyncCircusClient(endpoint=self.arbiter.endpoint)

    # adding more than one process should fail
    yield cli.send_message('incr', name='test')
    res = yield cli.send_message('list', name='test')
    self.assertEqual(len(res.get('pids')), 1)
    yield self.stop_arbiter()
于 2017-07-12T16:03:02.380 に答える