使用Google App Engine提供大型生成文件?

2 投票
4 回答
807 浏览
提问于 2025-04-16 10:08

目前我有一个GAE(谷歌应用引擎)应用,它可以进行一些离线处理(备份用户的数据),并生成一个大约10到100MB的文件。我不太确定最好的方法来把这个文件提供给用户。我考虑的两个选项是:

  1. 在离线处理的代码中添加一些代码,让它假装成一个表单上传到blob存储,然后通过正常的blob存储流程来提供这个文件。

  2. 让离线处理的代码把文件存储在GAE以外的地方,然后从那里提供文件。

我是不是忽略了更好的方法?我觉得这个功能可能不太适合GAE。我曾考虑过把文件存储在数据存储中,作为db.Text或Dd.Blob,但那样会遇到1MB的限制。

任何建议都非常感谢。

4 个回答

1

我建议选择第一个选项。准备这个“blob”(就是一块数据)需要写一些额外的代码,但使用blobstore的API可以让你轻松地提供文件的某些字节范围:

http://code.google.com/appengine/docs/python/blobstore/overview.html#Serving_a_Blob

你不需要自己去实现文件分块的服务。

2

我们需要提到的是,从一段时间之前开始,你可以使用blobstore的实验性功能来写入文件

然后,你可以使用一个很方便的BlobstoreDownloadHandler来提供文件下载。

3

我觉得通过表单提交把它存储到blobstore里是你现在最好的选择。我们有计划实现可以通过程序写入blobstore的功能,但这个功能还没有准备好。

撰写回答