小编pat*_*kcd的帖子

使用Gevent和WSGI阻止调用

我刚刚开始使用协同程序,并阅读了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()
Run Code Online (Sandbox Code Playgroud)

我期望一个结果,每个请求在显示文本之前会有5秒的延迟.然而,发生的是每个请求都通过调用gevent.sleep()排队等候,如果第二个请求在第一个请求之后立即启动,则会使第二个请求花费大约10秒.

serve_forever函数不是为每个请求生成新的greenlets吗?

wsgi blocking coroutine gevent

3
推荐指数
1
解决办法
1321
查看次数

标签 统计

blocking ×1

coroutine ×1

gevent ×1

wsgi ×1