【问题标题】:How many blobs may be submitted to GAE blobstore in one call?一次调用可以向 GAE blobstore 提交多少 blob?
【发布时间】:2012-08-21 12:46:03
【问题描述】:

我正在尝试将 1744 个小文件上传到 blobstore(所有文件的总大小为 4 MB)并收到 HTTP/1.1 503 Service Unavailable 错误。

这是 100% 可重现的。

这是一个错误,我是否违反了任何约束?我在文档中没有看到关于一次调用中提交的 blob 数量的任何限制。

【问题讨论】:

    标签: google-app-engine blobstore http-status-code-503


    【解决方案1】:

    上面声称 create_upload_url 每次上传只能接受一个文件的答案是错误的。您可以在一次上传中上传多个文件,这是您解决问题的方式。

    话虽如此,在大约一年左右的时间里进行批量上传并修复时,有一个reliability problem。如果可能的话,我建议将批量大小保持小一点(比如批量 100 个左右的文件)。批处理中的每个文件都会写入数据存储以记录 blob 密钥,因此 1744 个文件 == 1744 次写入,如果其中一个文件失败,则整个上传都将失败。

    如果你给我 app_id,我可以看看你的上传可能出了什么问题。

    【讨论】:

    • app_id是cl-test-grid,你看看就好了
    • 我删除了我的答案.. 但我并没有完全错 :) 我找不到我在哪里读到的关于某些东西被破坏的事实.. 感谢您的洞察力 :)
    • 斯图尔特,我已经注册为票了:code.google.com/p/googleappengine/issues/detail?id=8032
    • 顺便说一句,不幸的是,将批次拆分为较小的批次并不是一个立即可用的替代方案,它需要重新设计应用程序逻辑,因为现在每次上传都会向管理员发送电子邮件,如果我们已经拆分它,电子邮件的数量将增加 10 的顺序。
    • 当然我明白 - 您可以随时将您的电子邮件发送移动到基于任务队列的解决方案,在该解决方案中您延迟发送邮件,直到所有 blob 都已上传。
    【解决方案2】:

    所以,答案。目前,一个请求中只能提交 http://code.google.com/p/googleappengine/issues/detail?id=8032 的范围内修复,以便可以提交无限数量的文件。但在部署修复之前可能需要一个或两个 GAE 版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-04
      • 2015-10-14
      • 2012-09-12
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多