我剛開始使用協程,並閱讀了gevent和greenlets。爲了測試我通過gevents pywsgi模塊爲這個代碼:使用Gevent和WSGI阻止呼叫
from gevent.pywsgi import WSGIServer
import gevent
def hello_world(env, start_response):
gevent.sleep(5)
start_response('200 OK', [('Content-Type', 'text/html')])
return ["<b>hello world</b>"]
print 'Serving on 8088...'
WSGIServer(('127.0.0.1', 8888), hello_world).serve_forever()
我期望的結果,其中顯示文本之前每個請求將獲得5秒的延遲。但是,會發生什麼情況是每次請求都會通過調用gevent.sleep()來排隊,如果第一次請求在第一次請求之後立即啓動,則第二次請求將花費近10秒的時間。
是不是serve_forever函數爲每個請求產生新的greenlet?