Python 多进程龙卷风

Python tornado with multi-process

我找到了如何使用多进程执行 tornado。

server = HTTPServer(app)
server.bind(8888)
server.start(0)  #Forks multiple sub-processes
IOLoop.current().start()

在这种情况下,有什么方法可以在进程之间共享资源吗?

而且它似乎在进程上使用相同的端口。

tornado 是否为每个进程平衡负载本身?

如果是这样,它是怎么做到的?

一般来说,当使用多进程模式时,进程仅通过外部服务进行通信:数据库、缓存服务器、消息队列等。对于 运行 在同一进程上的进程,还有一些额外的选项可用机器(请参阅 multiprocessing 模块`),但一般来说,一旦您不再使用单个进程,最好寻找在您超越单个机器时将继续扩展的技术。

在这种情况下,是内核而不是 Tornado 跨进程进行负载平衡。从理论上讲,这是一种自我纠正机制,因为新的连接只会被提供给连接到达时处于空闲状态的进程。然而,在实践中,这往往会导致严重的不平衡(负载最多的进程的连接数是负载最少的进程的 2-3 倍),因此专用的负载平衡代理将导致更均匀的分布。