这是一个测试应用程序:
#!/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 的每个请求都在一个线程中处理。现在我打算开发一个拉长服务器,我觉得我需要将每个请求都派发到一个独立的线程,以避免阻塞后续请求。我应该怎么办?
最佳答案
这个问题已经解决了。我的猜测是错误的,事实是:
在 Chrome 浏览器中,如果两个请求由相同的协议(protocol)、主机名、端口和路径组成,则在前一个请求关闭之前,后一个请求不会发送。
被阻止的不是服务器而是浏览器。
关于python - 如何将对一个 URL 的请求分派(dispatch)到多个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11366050/