我对GAE和Web开发一般都很陌生,我正在尝试使用GAE BlobStore。我使用python似乎无法找到任何有关将大量文件上传到BlobStore的资源。
我已经阅读了许多资源和示例,但在这个特定问题上,它们似乎没有帮助。
有没有人对此有任何资源或经验?
答案 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上传文件。
这样的脚本可以用find
,curl
和xargs
组合在python中编写,甚至可以用shell脚本编写。
对于使用多个线程进行加速并在paralel中执行32次上传有帮助。
为了获得稳定性,在上传文件后,我们可以尝试下载并比较尺寸/ md5,如果出现问题则重新上传。