我在AWS Api网关/ Lambda环境中使用Flask(感谢Zappa),但是响应大小有限制,因此Flask的send_file
在这种情况下还不够。
有没有一种方法可以流式传输/分段(不确定这些术语是否正确)作为Flask的响应来生成类似文件的对象?在无AWS环境中,我发送的请求正文不能超过 5mb (6mb?)。
当前代码(简单的S3代理,一旦下载即删除对象):
@app.route('/polling/<key>')
def polling(key):
obj = BytesIO()
try:
s3.download_fileobj('carusoapi', key, obj)
s3.delete_object(Bucket='carusoapi', Key=key)
return send_file(obj, as_attachment=True, attachment_filename=key)
except Exception:
return 'File not ready yet', 204
我看过一些示例here,但不了解如何应用它们,或者这甚至不是我要的内容。
我还注意到boto3 S3模块具有诸如download_fileobj
here的回调之类的选项,并且您可以指定块大小here,但是同样,我不知道如何将其应用于烧瓶反应。
我知道解决此问题的方法,其中包括向客户端发送签名的下载链接以下载项目,但随后我必须在客户端中实施以删除文件。