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