简单的 Flask/gevent 请求没有同时运行

2024-02-24

我有这个简单的 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()

当我运行它并在浏览器中打开多个网址时,除了其中一个之外,所有网址都会被阻止。我究竟做错了什么?

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


浏览器中的多个选项卡将被阻止。这并不意味着 gevent/gunicorn 没有同时运行请求。我尝试使用并发的curl请求和XmlHttpRequest - 它按预期工作。另请注意,curl 会缓冲输出。需要“\r\n”才能使其逐行打印。

旁注:感谢 #pocoo 上的 mitsuhiko 解决了这个问题。如果您还没有尝试过 Flask,那么您应该尝试一下。 mitushiko和flask都很棒。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单的 Flask/gevent 请求没有同时运行 的相关文章

随机推荐