我正在使用openstack创建一个类似服务的投递箱。我正在使用烧瓶制作网络界面。用户在get请求的内容中获取对象数据。我正在迭代地向用户发送数据。但我的Flask应用程序会停止,直到整个对象被下载。我怎么能让它无阻塞?
#Returns the json content
r = swift_account.getObject(container_name, object_name)
filename = r.headers['X-Object-Meta-Orig-Filename']
#Make a generator so that all the content are not stored at once in memory
def generate():
for chunk in r.iter_content():
yield chunk
response = make_response(Response(stream_with_context(generate())))
response.headers['Content-Disposition'] = 'attachment; filename=' + filename
return response
答案 0 :(得分:0)
烧瓶是以阻塞还是非阻塞运行取决于您如何运行它。当你说阻止时,你是如何运行它的?
除非它是由具有异步功能的东西运行,例如带异步的gunicorn,或者至少是多个请求的线程模型,例如带有mod_wsgi的apache,否则它将无法一次响应多个请求。