在烧瓶中无阻塞下载文件?

时间:2014-10-22 11:52:39

标签: python flask

我正在使用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

1 个答案:

答案 0 :(得分:0)

烧瓶是以阻塞还是非阻塞运行取决于您如何运行它。当你说阻止时,你是如何运行它的?

除非它是由具有异步功能的东西运行,例如带异步的gunicorn,或者至少是多个请求的线程模型,例如带有mod_wsgi的apache,否则它将无法一次响应多个请求。