4
这是一个测试应用程序:如何将一个URL的请求分配给多个线程?
#!/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
- 请求/ B at 00:01
- request/c at 00:02
,你将
- 从/在一个00:10
- 接收响应接收来自/ B在0时11
- 响应接收来自/ C在零时12 响应
但是,如果你
- REQ uest/A在00:00
- 请求/一个在00:01
- 请求/一个在00:02
,你将
- 从/在00接收响应: 10
- 在00:20
- 接收响应从/在00:30
所以我想每一个URL的请求都在一个线程中处理。现在我打算开发一个长久的服务器,我想我需要将每个请求分派给一个独立的线程,以避免阻止后续的请求。我该怎么办?
如果您尝试处理长轮询,您可能需要使用Tornado之类的异步框架来避免创建过多的线程。 – Amber 2012-07-06 16:27:00
你可以尝试返回[一个生成器](http://flask.pocoo.org/docs/patterns/streaming/):'def a():\ n def g():sleep(10); yield'hello'\ n return Response(g(),mimetype ='text/plain')'。它可能行不通,但值得一试。 – jfs 2012-07-06 16:33:49