0

我在 AWS Api Gateway/Lambda 环境中使用 Flask(感谢 Zappa),但响应大小有限制,因此 Flasksend_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

我在这里看到了一些示例,但不明白如何应用它们,或者这甚至是我正在寻找的。

我还注意到 boto3 S3 模块具有回调等选项,您可以在此处指定download_fileobj 大小,但同样,我不明白如何将其应用于 Flask 响应。

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

4

0 回答 0