【问题标题】:Some Google App Engine BlobStore Problems一些 Google App Engine BlobStore 问题
【发布时间】:2011-09-28 09:13:07
【问题描述】:

我已经在 Google App Engine 官方网站上搜索并阅读了有关 BlobStore 的文档,但仍有一些我不明白的问题。我的平台是 webapp。

我读过的文档:

阅读所有这些文档后,我仍然有一些问题:

  1. Blobstore Python API Overview 中说:应用程序通过一次 API 调用可以读取的 Blobstore 数据的最大大小为 1MB。这是什么意思?这个 1MB 限制是否适用于 sendblob()?以webapp Blobstore Handlers中的如下代码为例:

    class ViewPhotoHandler(blobstore_handlers.BlobstoreDownloadHandler):
        def get(self, photo_key):
            self.send_blob(photo_key)
    

    这是否意味着与photo_key 关联的照片(上传并存储在 blobstore 中)必须小于 1MB?从上下文来看,我不这么认为。我认为照片可以大到 2GB。但我不确定。

  2. send_blob() 上的 ContentType 是如何确定的?是文本/html 还是图像/jpeg?我可以自己设置它吗? webapp Blobstore Handlers 的以下解释令人困惑。对于不会说英语的人来说相当困难。有人可以用代码示例来解释它吗? send_blob() 的文档在哪里?我找不到它。

    send_blob() 方法接受一个 save_as 参数,该参数确定 blob 数据是作为原始响应数据还是作为带有文件名的 MIME 附件发送,这会提示 Web 浏览器使用给定名称保存文件而不是显示它。如果参数的值是字符串,则 blob 作为附件发送,字符串值用作文件名。如果 True 且 blob_key_or_info 是 BlobInfo 对象,则使用该对象的文件名。默认情况下,blob 数据作为响应正文发送,而不是作为 MIME 附件发送。

  3. 有一个文件http://www.example.com/example.avi 是20MB 甚至2GB。我想从互联网上获取 example.avi 并将其存储在 BlobStore 中。我查了一下,urlfetch 请求大小限制为 1MB。我搜索了,没有找到解决方案。

非常感谢!

【问题讨论】:

  • urlfetch 限制不是 1MB - 它是 32MB 并且已经有一段时间了。

标签: python google-app-engine blobstore web-applications


【解决方案1】:
  1. send_blob() 不涉及您的应用程序从 API 读取文件,因此 1MB 限制不适用。向用户返回响应的前端服务将读取整个 blob 并在响应中返回所有 blob(它很可能以块的形式进行读取,但这是一个您不必担心的实现细节。

  2. send_blob() 将内容类型设置为 Blob 的内部存储类型,或者使用可选的 content_type 参数指定的类型为 send_blob()。对于文档,似乎需要RTFS;有一个文档字符串(在 google.appengine.ext.webapp.blobstore_handlers 包中。)

  3. 对于从 Web 获取任意文件并将它们存储在 Blobstore 中,确实没有很好的解决方案。您很可能需要在其他地方运行的服务(例如您自己的机器或 EC2 实例)来获取文件并将它们 POST 到应用程序中的 blobstore 处理程序。

【讨论】:

    猜你喜欢
    • 2013-12-25
    • 2013-09-23
    • 1970-01-01
    • 2020-03-09
    • 2015-02-07
    • 1970-01-01
    • 2011-09-27
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多