【发布时间】:2011-10-29 05:20:56
【问题描述】:
我刚刚开始使用协程并阅读了 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 吗?
【问题讨论】:
标签: wsgi blocking coroutine gevent