Python 简单烧瓶/gevent请求为';t同时运行

Python 简单烧瓶/gevent请求为';t同时运行,python,flask,gevent,Python,Flask,Gevent,我有这个简单的flask/gevent演示代码 #!/usr/bin/env python import gevent from gevent.pywsgi import WSGIServer from gevent import monkey monkey.patch_socket() from flask import Flask, Response app = Flask(__name__) @app.route('/') def stream(): def gen():

我有这个简单的flask/gevent演示代码

#!/usr/bin/env python
import gevent
from gevent.pywsgi import WSGIServer
from gevent import monkey
monkey.patch_socket()

from flask import Flask, Response

app = Flask(__name__)

@app.route('/')
def stream():
    def gen():
        for i in range(10):
            yield "data: %d\r\n" % i
            gevent.sleep(1)
    return Response(gen())

if __name__ == '__main__':
    http = WSGIServer(('', 5000), app)
    http.serve_forever()
当我运行它并在浏览器中打开多个URL时,除了一个URL之外,其他URL都会被阻止。我做错了什么


我试过用monkey.patch_all()运行它,并用
gunicorn streaming:app-k gevent运行它-它仍然会在浏览器中阻塞。

浏览器中的多个选项卡将阻塞。这并不意味着gevent/gunicorn没有同时运行这些请求。我在并发curl请求和XmlHttpRequest中尝试了它——它可以按预期工作。还请注意,curl缓冲输出。“\r\n”是使其逐行打印所必需的


旁注:感谢光之子在#pocoo解决了这个问题。如果你还没试过烧瓶,你应该试一下。mitushiko和flask都很棒。

这些应该是编辑,而不是评论。