将100万张图片上传到BlobStore

时间:2012-09-05 02:03:54

标签: google-app-engine blobstore

我对GAE和Web开发一般都很陌生,我正在尝试使用GAE BlobStore。我使用python似乎无法找到任何有关将大量文件上传到BlobStore的资源。

我已经阅读了许多资源和示例,但在这个特定问题上,它们似乎没有帮助。

有没有人对此有任何资源或经验?

2 个答案:

答案 0 :(得分:3)

我们会根据您计划使用图片的方式,将照片上传到Google存储空间,然后使用gsutil从您的AppEngine应用中访问它们。如果有可恢复的上传,multithreading可以加快上传速度。

否则,您需要使用create_upload_url并自行批处理,因为this错误,一次批量少于500个文件。

答案 1 :(得分:3)

当我从专用服务器迁移到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上传文件。

这样的脚本可以用findcurlxargs组合在python中编写,甚至可以用shell脚本编写。

对于使用多个线程进行加速并在paralel中执行32次上传有帮助。

为了获得稳定性,在上传文件后,我们可以尝试下载并比较尺寸/ md5,如果出现问题则重新上传。