【问题标题】:Simple flask/gevent request isn't running concurrently简单的烧瓶/gevent 请求没有同时运行
【发布时间】:2013-02-20 20:07:50
【问题描述】:

我有这个简单的烧瓶/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 时,除了一个之外,它们都被阻止。我做错了什么?

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

【问题讨论】:

  • 那些应该是编辑,而不是 cmets。

标签: python flask gevent


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2022-01-19
    • 1970-01-01
    • 2013-08-19
    • 2014-07-23
    • 2020-11-23
    • 1970-01-01
    相关资源
    最近更新 更多