如何将一个URL的请求分派给多个线程?

时间:2012-07-06 16:20:11

标签: python multithreading flask

这是一个测试应用程序:

#!/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

如果你

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

,你会

  • 在00:10
  • 收到/ a的回复
  • 在00:11收到/ b的回复
  • 在00:12
  • 收到/ c的回复

但是如果你

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

,你会

  • 在00:10
  • 收到/ a的回复
  • 在00:20收到/ a的回复
  • 收到来自/ a 00:30
  • 的回复

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

1 个答案:

答案 0 :(得分:3)

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