【发布时间】:2016-05-20 08:37:12
【问题描述】:
我知道这有点开放,但我对申请使用 Flask 和 boto3 开发的大文件上传服务的策略/方法感到困惑。对于较小的文件,一切都很好。但是当大小超过 100 MB 时,看看你们的想法真是太好了
我的想法如下 -
a) 使用某种 AJAX 上传器将文件流式传输到 Flask 应用程序(我正在尝试构建的只是使用 Flask-Restful 的 REST 接口。使用这些组件的任何示例,例如 Flask-Restful、boto3 和流式传输文件是受欢迎的。)。上传应用程序将(我相信)成为我们正在构建的微服务平台的一部分。我不知道烧瓶应用程序前面是否会有 Nginx 代理,或者它会直接从 Kubernetes pod/service 提供。如果它是直接提供的,我是否需要在 kubernetes 和/或 Flask 层中更改大文件上传?
b) 使用直接 JS 上传器(如 http://www.plupload.com/)并将文件直接流式传输到 s3 存储桶中,完成后获取 URL 并将其传递给 Flask API 应用程序并将其存储在 DB 中。这样做的问题是,凭证需要在 JS 中的某个地方存在,这意味着安全威胁。 (不确定是否还有其他问题)
您认为其中哪些(或我根本没有考虑过的不同)是最好的方法,我在哪里可以找到一些代码示例?
提前致谢。
[编辑]
我发现了这个 - http://blog.pelicandd.com/article/80/streaming-input-and-output-in-flask,作者正在处理像我这样的类似情况,他提出了一个解决方案。但他正在打开一个已经存在于磁盘中的文件。如果我想直接上传作为 s3 存储桶中的单个对象的文件怎么办?我觉得这可以作为解决方案的基础,但不是解决方案本身。
【问题讨论】:
标签: python rest amazon-s3 flask flask-restful