理解eventlet.wsgi.server

2 投票
1 回答
3035 浏览
提问于 2025-04-17 08:23

我有一个简单的Python程序:

from eventlet import wsgi
import eventlet
from eventlet.green import time

def hello_world(env, start_response):
    print "got request"
    time.sleep(10)
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello, World!\n']

wsgi.server(eventlet.listen(('', 8090)), hello_world)

当我运行这个程序,并在浏览器中多次打开 http://localhost:8090/ 时,got request 只在第一次请求处理完(大约10秒后)后才会打印出来。看起来 eventlet.wsgi.server 是按顺序处理请求的。但是我使用的是“绿色”的 sleep,那这怎么可能呢?

谢谢!

1 个回答

1

你需要像下面这样使用猴子补丁:

eventlet.patcher.monkey_patch(all=False, socket=True, time=True,
                          select=True, thread=True, os=True)

更多信息可以在这个 链接 找到。

撰写回答