【问题标题】:Python tornado with multi-process具有多进程的 Python 龙卷风
【发布时间】:2015-10-27 15:13:24
【问题描述】:

我找到了如何使用多进程执行龙卷风。

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

在这种情况下,有没有办法通过进程共享资源?

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

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

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

【问题讨论】:

    标签: python tornado python-multiprocessing


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 2012-11-05
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      相关资源
      最近更新 更多