总的来说,我对 GAE 和 Web 开发还很陌生,我正在尝试使用 GAE BlobStore。我正在使用 python 似乎无法找到将大量文件上传到 BlobStore 的任何资源。
我已经阅读了许多资源和示例,但似乎没有一个对这个特定问题有帮助。
有没有人有这方面的资源或经验?
总的来说,我对 GAE 和 Web 开发还很陌生,我正在尝试使用 GAE BlobStore。我正在使用 python 似乎无法找到将大量文件上传到 BlobStore 的任何资源。
我已经阅读了许多资源和示例,但似乎没有一个对这个特定问题有帮助。
有没有人有这方面的资源或经验?
我们将根据您计划使用图像的方式将它们上传到 Google 存储并使用gsutil从您的 AppEngine 应用程序访问它们。如果具有可恢复上传和多线程以加快上传速度。
否则,由于此错误,您需要使用create_upload_url并自己进行批处理,一次批处理少于 500 个文件。
从专用服务器迁移到 appengine 时,我的项目中有类似的要求。我们不必移动 100 万,但大约是 100000。
花了一些时间,但最后完成了。
这是使用非常简单的解决方案完成的。刚刚创建了一个文件上传服务,就像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())
然后使用上传脚本从本地主机上传文件。
这样的脚本可以用 python 编写,甚至可以用 shell 脚本编写,通过组合find
,curl
和xargs
.
为了加速使用多个线程并并行执行 32 次上传有帮助。
For robustness, after uploading a file, we can try to download it and compare the sizes/md5, and re-uploading if something went wrong.