来自S3的烧瓶流/多部分文件

时间:2019-03-08 14:19:34

标签: python flask boto3 wsgi zappa

我在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,但是同样,我不知道如何将其应用于烧瓶反应。

我知道解决此问题的方法,其中包括向客户端发送签名的下载链接以下载项目,但随后我必须在客户端中实施以删除文件。

0 个答案:

没有答案