1

在配置观察者时,将这两个设置都包含在观察中的目的是什么:

singleton = True
numprocess = 1

该文档指出该设置singleton具有以下效果:

单身人士:

如果设置为 True,则此观察者最多有一个进程。默认为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 回答