2

私のアプリは、大量の画像を blob として保存します。これは大まかに画像を保存する方法です。

from google.appengine.api import files
# ...
fname = files.blobstore.create(mime_type='image/jpeg')
with files.open(fname, 'a') as f:
  f.write(image_byte)
files.finalize(fname)
blob_key = files.blobstore.get_blob_key(fname)

これらの画像を提供するために、私はimages.get_serving_url(blob_key).

ここに私の質問があります:

  1. すべての BLOB を Google Cloud Storage にコピーする必要がありますか? つまり、GCS クライアント ライブラリと既存の BLOB キーを使用して、既存の BLOB にアクセスできますか? または、blob を GCS にコピーして、新しい blob キーを取得する必要がありますか?
  2. それらを GCS にコピーする必要があると仮定すると、最も簡単な方法は何ですか? 移行ツールなどはありますか? それができない場合、コピーして貼り付けることができるサンプルコードはありますか?

ありがとう!

4

4 に答える 4

0

2015 年 5 月 19 日に Google Cloud Platform からメールを受け取りました。抜粋を以下に示します。

Files API の削除は、次のように行われます。

2015 年 5 月 20 日以降、新しいアプリケーションは Files API にアクセスできなくなります。2015 年 5 月 20 日より前に作成されたアプリケーションは、引き続き問題なく実行されます。とはいえ、開発者には Cloud Storage クライアント ライブラリへの切り替えを今すぐ開始することを強くお勧めします。

2015 年 7 月 28 日午後 12 時 (太平洋時間) から、Files API は 24 時間一時的にシャットダウンされます。

2015 年 8 月 4 日、太平洋時間の午後 12:00 に Files API を完全にシャットダウンします。

まったく同じコードを使用してブロブストア ファイルを作成していたので、GCS システムの調査に 1 日を費やしました。「サービス アカウント」を機能させることに失敗した後 (文書化されていない OAuth2 の混乱を経て)、GCS の使用をあきらめました。

現在、ndb の BlobProperty を使用しています。親キーとキー名 (ファイル名として) の両方を使用して、ブロブを別のモデルに保持し、画像を見つけます。別のモデルを使用すると、巨大なブロブが通常のエンティティから除外されるため、サイズが大きいためにフェッチが遅くなることはありません。画像専用の別の REST API を作成しました。

于 2015-05-26T17:51:07.687 に答える
0

GAE サーバーをローカルで実行しているときに、私も同じ問題に直面しました。

com.google.appengine.tools.cloudstorage.NonRetriableException: com.google.apphosting.api.ApiProxy$FeatureNotEnabledException: ファイル API が無効になっています。詳細情報: https://cloud.google.com/appengine/docs/deprecations/files_api

ここで私の場合、これは私の問題を修正しました:

単純に私が変わった

これ:

「com.google.appengine.tools:appengine-gcs-client:0.4.1」をコンパイルします

に:

「com.google.appengine.tools:appengine-gcs-client:0.5」をコンパイルします

build.gradleFiles API(Beta) は 2013 年 6 月 12 日に非推奨となり、2015 年 9 月 9 日に廃止されたためです。( Source )

このMVNレポから最新のものは「com.google.appengine.tools:appengine-gcs-client:0.5」です

于 2016-04-01T17:32:50.673 に答える