GWTを使用してGoogle App Engineにデータをアップロードしようとしています。私はFileUploaderウィジェットを使用しており、サーブレットはInputStreamを使用してデータを読み込み、データストアに直接挿入します。ローカルで実行すると、大きなファイルを正常にアップロードできますが、GAEにデプロイすると30秒のリクエスト時間で制限されます。これを回避する方法はありますか?または、ファイルを小さな塊に分割し、小さな塊を送信する方法はありますか?Google App Engine大容量ファイルアップロード
答えて
あなたは別のサーバーにアップロードする必要があります.30秒のタイムアウトを回避することはできません。方法があれば、私を修正してください!私はどのように知ってほしい!
現在のところ、GAEではファイルのアップロード(および応答サイズ)に制限があり、他の多くのものでは1 MBの制限があります。たとえネットワーク接続が30秒間のウィンドウ内で10 MBを超えるように十分速くても、それは無駄になります。グーグル・ヴァン・ロッサムは、昨日、Pycon Italia Treに言及していると聞きましたが、将来的にこれらの制限を克服する計画があると言いました(少なくともGAEのユーザーはクォータを超過します。支払いをしていないGAEのユーザーにも適用され、一般的にGAEを無料で利用するには小さなクォータを受け入れる必要があります)。
http://googleappengine.blogspot.com/2010/12/happy-holidays-from-app-engine-team-140.html – theosp
GAEに保存するときに最も近いのはチャンクに分割し、ダウンロードするときは別々のAJAXリクエストを発行してまとめます。
小さなBLOBにデータをチャンクすることに同意し、2つのテーブルを持ち、1つはメタデータ(ファイル名、サイズ、ダウンロード数など)を含み、その他にはチャンクが含まれます。外部キー、私はそれが可能だと思う...
またはすべてのチャンクをアップロードするときには、1つのテーブルを持つ1つのブロブにそれらをまとめて置くことができます。
しかし、問題がある、それがローカルファイルシステムにアクセスできるように、あなたがあなたの顧客によって署名され、信頼される必要があるJavaアプレット、などのチャンク・データを、提供するためにシッククライアントが必要になります
の場合あなたの要求は要求時間を使い果たしており、あなたができることはほとんどありません。ファイルが大きすぎると、クライアント上でチャンクする必要があります(フラッシュやJava、puploadのようなアップロードフレームワークなど)。
ファイルをアプリケーションに取得すると、データストアの制限という別の問題が発生します。ここでは、2つのオプションがあります。あなたはあなたが事実上無制限のサイズのブロブを保存することができbigblobaeのようなものを使用することができ、大きなアップロード
を50メガバイトを処理するための非常に素敵なAPIを持ってBlobStoreサービスを使用することができます
を通常のappengineデータストア。あなたがあなたのアップロードのタイムアウトの問題を与えるべきではありません1 GB size limitとspecial handler, called unsurprisingly BlobstoreUpload Handlerを持っているBlobStoreを使用することにより
。
また、あなたが求めているものを正確に実行するhttp://demofileuploadgae.appspot.com/(sourcecode、source answer)もチェックしてください。
また、GWT-Examplesの残りの部分もチェックしてください。
30秒の応答時間制限は、コードの実行にのみ適用されます。したがって、リクエスト本体の一部としての実際のファイルのアップロードは、そのファイルから除外されます。タイマーは、要求がクライアントによってサーバーに完全に送信され、コードが送信された要求の処理を開始すると開始されます。したがって、クライアントの接続がどれほど遅いかは関係ありません。
Uploading file on Google App Engine using Datastore and 30 sec response time limitation
- 1. Google App Engineのタスクキュー:DeadlineExceededError(ファイルアップロード時)
- 2. Heroku(NodeJS + Express)の大容量ファイルアップロード
- 3. Google App Engineのデータ量の制限
- 4. 大容量の大容量ファイル
- 5. Google Appsスクリプト大容量ファイルをアップロード
- 6. 大量のデータ(> 1000000)でGoogle App Engine MapReduceを使用する方法
- 7. Google App Engineタスクキュー
- 8. Google App Engineジオクエリ
- 9. Google App Engine Profiler
- 10. Google App Engine - JDODetachedFieldAccessException
- 11. EJB + Google App Engine
- 12. App Engine + Googleドキュメント
- 13. Google App Engineの:
- 14. Google App Engineリクエストステータス
- 15. Google App Engineデータベース
- 16. Google App Engine MemcacheException
- 17. Google App Engine APNS
- 18. Google App Engine ThreadSafe
- 19. Google App Engineを -
- 20. Google App Engineキークラス
- 21. Google App Engineの:
- 22. Google App Engineスタックドライバー。
- 23. Google App Engine __main__モジュール
- 24. Google App Engine localhost
- 25. Google App Engine&Python
- 26. IPV6 Google App Engine
- 27. Google App EngineとGoogleストレージ
- 28. Google Cloud DatastoreとGoogle App Engine
- 29. Google App EngineとGoogleカレンダーAPI
- 30. Google App Engineのプログレスバー
これは私が恐れていたものです。私はあまりにも悪くないと思う...私はストレージのためのAmazon S3を使用することができます。私はそれが記憶部分を単純化するだろうと思うが、同じ場所にすべてを保つことはまだいい。 – user103920