【发布时间】:2012-09-05 02:03:54
【问题描述】:
总的来说,我对 GAE 和 Web 开发还很陌生,我正在尝试使用 GAE BlobStore。我正在使用 python 似乎无法找到将大量文件上传到 BlobStore 的任何资源。
我已经阅读了许多资源和示例,但似乎没有一个对这个特定问题有帮助。
有人有这方面的资源或经验吗?
【问题讨论】:
标签: google-app-engine blobstore
总的来说,我对 GAE 和 Web 开发还很陌生,我正在尝试使用 GAE BlobStore。我正在使用 python 似乎无法找到将大量文件上传到 BlobStore 的任何资源。
我已经阅读了许多资源和示例,但似乎没有一个对这个特定问题有帮助。
有人有这方面的资源或经验吗?
【问题讨论】:
标签: google-app-engine blobstore
从专用服务器迁移到 appengine 时,我的项目中有类似的要求。 我们不必移动 100 万,但大约是 100000。
花了一些时间,但最后完成了。
这是使用非常简单的解决方案完成的。刚刚创建了一个文件上传服务,就像例子on blogstore docs一样。
class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def get(self):
upload_url = blobstore.create_upload_url('/upload')
self.response.write(upload_url)
def post(self):
upload_files = self.get_uploads('file')
blob_info = upload_files[0]
self.response.write(blob_info.key())
然后使用上传脚本从 localhost 上传文件。
通过find、curl和xargs的组合,可以用python甚至shell脚本编写这样的脚本。
为了加速使用多个线程和并行上传 32 次帮助。
为了稳健性,上传文件后,我们可以尝试下载并比较sizes/md5,如果有问题重新上传。
【讨论】:
我们将根据您计划如何使用这些图像,您可以将它们上传到 Google 存储并使用 gsutil 从您的 AppEngine 应用程序访问它们。如果有可恢复的上传,multithreading 可以加快上传速度。
否则,由于this 错误,您需要使用create_upload_url 并自己进行批处理,一次批处理少于 500 个文件。
【讨论】: