【问题标题】:Flask Yield don't work on ChromeFlask Yield 在 Chrome 上不起作用
【发布时间】:2016-12-04 18:29:00
【问题描述】:

以下视图仅在 Firefox 上执行期间生成输出。 在 Chrome 上,当while 结束时,请求会刷新整个响应一次。

是什么导致它在 Chrome 上不起作用?

@processes.route('/read_buffer/<int:pid>')
def read_buffer(pid):

    def generate():
        sent = 0
        while not settings.buffers[pid]['finished']:
            for i, row in enumerate(settings.buffers[pid]['lines'][sent:]):
                sent += 1
                yield row

            gevent.sleep(0.5)

    return flask.Response(
        response=generate(),
        status=200,
        mimetype="text/plain"
    )

应用配置:

from flask_cors import CORS
from flask_socketio import SocketIO

app = flask.Flask(__name__)
app.config['DEBUG'] = False
app.register_blueprint(processes.processes, url_prefix='/processes')
CORS(app)
socketio = SocketIO(app, async_mode='gevent')
socketio.run(
    app=app,
    host=_config.get('server', 'host', fallback='0.0.0.0'),
    port=_config.getint('server', 'port', fallback=5000),
    use_reloader=False
)

我正在使用 SocketIO,因为我在其他地方使用它。

【问题讨论】:

    标签: python google-chrome flask yield gevent


    【解决方案1】:

    似乎是 Chrome 中的一个已知错误:

    https://bugs.chromium.org/p/chromium/issues/detail?id=156023

    【讨论】:

      猜你喜欢
      • 2017-11-18
      • 2015-07-06
      • 2013-10-15
      • 2017-11-25
      • 1970-01-01
      • 2015-07-07
      • 2021-11-14
      • 2017-12-12
      • 2016-09-13
      相关资源
      最近更新 更多