繁体   English   中英

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

[英]Serving large generated files using Google App Engine?

目前,我有一个GAE应用程序,该应用程序进行一些脱机处理(备份用户的数据),并生成一个文件,该文件的大小大约为10-100 MB。 我不确定将这个文件提供给用户的最佳方法。 我正在考虑的两个选项是:

  1. 在脱机处理代码中添加一些代码,以“欺骗”形式将其作为表单上传到Blob存储,然后通过常规Blobstore流程来处理文件。

  2. 使脱机处理代码将文件存储在GAE之外的某个位置,然后从那里提供文件。

我有没有更好的方法? 我猜这是不太适合GAE的功能。 我曾想过以db.Text或Dd.Blob的形式存储在数据存储区中,但在那里遇到了1 MB的限制。

任何输入将不胜感激,

我认为通过表单发布将其存储在blobstore中是您目前最好的选择。 我们已经计划实现程序化Blobstore编写,但是还没有准备好。

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

然后,您可以使用不错的BlobstoreDownloadHandler将文件作为下载文件提供

我会坚持第一个选择。 准备Blob将需要一些额外的编码,但是Blobstore API允许提供文件的字节范围:

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

您将不需要自己实现服务文件块。

尽管我不确定是否有更好的方法,但是您可以忽略一些方法:

将数据分成许多1MB的块,并有单独的请求来传输这些块。

这将需要来自外部应用程序的合作,以实际地分块地检索数据。 您可能想使用HTTP Range标头来维护单个文件的错觉。 然后有另一个对象,该对象保留所有单个块的ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM