私はGAEとWeb開発全般にまったく慣れていないため、GAE BlobStoreを使用しようとしています。私はpythonを使用していますが、大量のファイルをBlobStoreにアップロードする際にリソースが見つからないようです。
私は多くのリソースと例を読みましたが、この特定の問題に役立つものはないようです.
これに関するリソースや経験はありますか?
私はGAEとWeb開発全般にまったく慣れていないため、GAE BlobStoreを使用しようとしています。私はpythonを使用していますが、大量のファイルをBlobStoreにアップロードする際にリソースが見つからないようです。
私は多くのリソースと例を読みましたが、この特定の問題に役立つものはないようです.
これに関するリソースや経験はありますか?
画像の使用方法に応じて、画像をGoogle Storageにアップロードし、 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())
次に、アップロード スクリプトを使用して、localhost からファイルをアップロードします。
find
このようなスクリプトは、 、curl
、および を組み合わせて、python またはシェル スクリプトで記述することができますxargs
。
複数のスレッドを使用して 32 のアップロードを並行して実行すると、スピードアップに役立ちます。
堅牢性のために、ファイルをアップロードした後、ファイルをダウンロードしてサイズ/md5 を比較し、問題が発生した場合は再アップロードを試みることができます。