4

这是一个测试应用程序:

#!/usr/bin/env python

from flask import Flask
from time import sleep

application = Flask(__name__)
application.debug = True

@application.route('/a')
@application.route('/b')
@application.route('/c')
def a():
    sleep(10)
    return 'Hello world.'

if __name__ == '__main__':
    application.run()

此应用程序部署在 Apache 上:

WSGIDaemonProcess Test processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup Test

如果你

  • 在 00:00 请求 /a
  • 在 00:01 请求 /b
  • 在 00:02 请求 /c

, 你会

  • 在 00:10 收到 /a 的响应
  • 在 00:11 收到来自 /b 的响应
  • 在 00:12 收到来自 /c 的响应

但是如果你

  • 在 00:00 请求 /a
  • 在 00:01 请求 /a
  • 在 00:02 请求 /a

, 你会

  • 在 00:10 收到 /a 的响应
  • 在 00:20 收到 /a 的回复
  • 在 00:30 收到 /a 的回复

所以我猜想对一个 URL 的每个请求都在一个线程中处理。现在我打算开发一个长拉服务器,我想我需要将每个请求分派到一个独立的线程,以避免阻塞后续请求。我该怎么办?

4

1 回答 1

3

这个问题已经解决了。我的猜测是不正确的,事实是:
在 Chrome 浏览器中,如果两个请求由相同的协议、主机名、端口和路径组成,那么后面的请求将不会发送,直到前面的请求关闭。
被阻止的东西不是服务器,而是浏览器。

于 2012-07-10T18:09:32.603 回答