我刚刚开始使用协程并阅读了 gevent 和 greenlets。对于测试,我通过 gevents pywsgi 模块提供了此代码:
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 函数不是为每个请求生成新的 greenlets 吗?