2

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

  1. 将一些代码添加到离线处理代码中,将其作为表单上传到 blob 存储区,并通过正常的 blob 存储区进程来提供文件。

  2. 让离线处理代码将文件存储在 GAE 之外的某个地方,并从那里提供服务。

我忽略了更好的方法吗?我猜这是不太适合 GAE 的功能。我曾想过在数据存储中存储为 db.Text 或 Dd.Blob,但我遇到了 1 MB 的限制。

任何输入将不胜感激,

4

4 回答 4

3

我认为通过表单帖子将其存储在 blobstore 中是您当前可用的最佳选择。我们计划实现程序化 blobstore 写入,但还没有准备好。

于 2011-01-17T22:52:14.427 回答
2

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

然后您可以使用漂亮的BlobstoreDownloadHandler将文件作为下载提供

于 2013-01-16T23:04:34.303 回答
1

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

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

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

于 2011-01-17T20:48:43.690 回答
0

您忽略了一些方法,尽管我不确定它是否更好:

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

这需要外部应用程序的合作才能实际检索块中的数据;您可能希望使用 HTTP Range 标头来维持单个文件的错觉。然后有另一个对象来保存所有单个块的 ID。

于 2011-01-17T20:39:21.707 回答