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():
        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 都被阻止。我做错了什么?

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

最佳答案

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

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

关于python - 简单的 flask /gevent 请求没有同时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988944/

相关文章:

python - aiogevent 事件循环 "fails"跟踪greenlets

python - Sphinx,最佳实践

python 导入 - 公共(public)或私有(private)约定

python - 如何将字符串切片为嵌套列表中的单个字符

javascript - Flask:基于先前选择的下拉值

python - 当使用 url_for 链接到 @route 中带有变量的函数时,Flask-Classy 给出 BuildError

python - Tornado/Twisted - Celery - Gevent 比较

python - 从包含 unicode 字符的 csv 文件导出数据

python - 无法使用docker-compose在其他端口中运行Python flask应用程序

python - python gevent库的monkeypatching是什么?