2015-10-27 124 views
2

我发现了如何用多进程执行龙卷风。多进程Python龙卷风

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

在这种情况下,有什么办法可以共享资源的流程吗?

它似乎使用相同的过程进程。

龙卷风是否为每个过程平衡负荷本身?

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

回答

4

通常,在使用多进程模式时,进程只能通过外部服务进行通信:数据库,缓存服务器,消息队列等。在同一台计算机上运行的进程有一些其他选项可用(请参阅multiprocessing模块“),但通常情况下,一旦您不再使用单个进程,最好看一下当您移出单台计算机时将继续扩展的技术。

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