龙卷风多进程HTTPServer()

时间:2015-10-13 18:38:21

标签: tornado

我有一个4核心系统,想要测试多进程龙卷风功能。我启动我的程序,它显示启动了4个进程:

[I 151013 19:19:44 process:124] Starting 4 processes

我的代码非常类似于文档中列出的内容:

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

在我的主处理程序中,我故意调用time.sleep(10)来阻止进程。我的印象是,如果我将另一个客户端连接到该客户端被阻止的网络服务器,它仍将得到服务,因为有4个进程正在监听端口。直到我到达> 4个进程(假设它们都仍然阻塞)客户端必须等待连接。

然而,当我测试这个时,第二个客户端必须等待第一个取消阻止。因此,我不确定我是否理解在同一端口上侦听多进程的目的。我错过了什么吗?为HTTPServer分配多个进程的目的/优势是什么?

1 个答案:

答案 0 :(得分:1)

听起来你遇到了令人惊讶的浏览器行为,当他们第一次尝试使用Tornado时会让许多用户绊倒,请阅读常见问题"My code is asynchronous, but it’s not running in parallel in two browser tabs"

  

浏览器会识别您正在尝试在两个不同的标签页中加载相同的页面,并将第二个请求延迟到第一个请求完成。