Google App Engineの通常の(柔軟性のない)インスタンスでは、Blobstore APIを使用して、ユーザーがBlobstoreに直接ファイルをアップロードできるようにURLを作成できます。アップロードされると、アプリケーションエンジンアプリケーションにファイルの場所が通知され、ファイルの処理が可能になります。 Pythonコードの例は次のとおりです。Google Cloud Storage create_upload_url - App Engine Flexible Python
from google.appengine.ext import blobstore
upload_url = blobstore.create_upload_url('/upload_photo')
the Blobstore docsを参照してください。
Google App Engineフレキシブル環境への切り替え、usage of the Blobstore has been largely replaced by Cloud Storage。このような場合、create_upload_url
に相当するのでしょうか?
私の現在の実装では、Python Flaskアプリケーションに標準的なファイルをアップロードします。その後のようなもので進行する:ファイルは私のApp Engineのインスタンスに来て、その後すぐにコピーされているので、それはcreate_upload_url
と比較して、ネットワークの負荷を倍増さのような
from flask import request
from google.cloud import storage
uploaded_file = request.files.get('file')
gcs = storage.Client()
bucket = gcs.get_bucket(bucket_name)
blob = bucket.blob(blob_name)
blob.upload_from_string(
uploaded_file.read(),
content_type=uploaded_file.content_type
)
これがそうです。したがって、アップローダはこれが起こっている間に余分な時間を待つようになります。おそらく私はこのために余分なApp Engine料金も負うことになるでしょう。より良い方法がありますか?
アップロードしたファイルを後で処理する作業者がいますが、私はクラウドストレージからファイルを再度ダウンロードする傾向があります。インスタンスファイルシステム。したがって、ファイルを格納場所に直接送るのではなく、インスタンスにアップロードすることの利点はありません。
私は2,3日前にhttps://stackoverflow.com/questions/42002013/replacing-blobstore-upload-handler-with-gcs/42002289#42002289に似た質問に答えました。アップロードハンドラを作成するのと同じ方法を使用できます。 – Aaron
Thanks @ Samson、しかし、私は 'google.appengine.ext.blobstore'パッケージはApp Engine Flexible Environmentで利用できないと思います。多分私は間違っていますか? –
@JonGこれについての回答が見つかりましたか? –