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

时间:2011-01-17 20:31:36

标签: python google-app-engine blob blobstore

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

  1. 将一些代码添加到离线处理代码中,这些代码将其作为表单上传到欺诈商店进行“欺骗”,然后通过正常的blobstore进程来提供文件。

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

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

    任何输入都将不胜感激,

4 个答案:

答案 0 :(得分:3)

我认为通过表单发布将它存储在blobstore中是您当前最好的选择。我们计划实施程序化的blobstore写作,但还没有准备好。

答案 1 :(得分:2)

我们需要提一下,从一段时间以前,您可以将blobstore的实验性产品用于write files

然后,您可以使用漂亮的BlobstoreDownloadHandler

将文件作为下载文件提供

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

你有一些方法可以忽略,虽然我不确定它是否会好得多:

将数据拆分为多个1MB的块,并有单独的请求来传输块。

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