【发布时间】: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