1

私のアプリスポット Web サイトでは、サードパーティの API を使用して大量のデータをクエリしています。次に、ユーザーはデータを CSV 形式でダウンロードします。csv を生成してダウンロードする方法を知っています。問題は、ファイルが大きいため、DeadlineExceededError が発生することです。

フェッチ期限を 60 に増やしてみました (urlfetch.set_default_fetch_deadline(60))。これ以上増やすのは合理的ではないようです。

Google App Engine でこの問題に取り組む適切な方法は何ですか? これは、タスク キューを使用する必要がある場所ですか?

ありがとう。

4

2 に答える 2

0

または、CSV コンテンツを使用して Google Cloud Storage (GCS) でファイルを動的に作成することを検討してください。その時点で、ファイルは GCS に存在し、ファイルを直接ダウンロードできる URL を生成できます。さまざまな認証方法用の他のオプションもあります。

これに関するドキュメントは、次の URL で参照できます。

https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/

https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/functions

重要な注意: Files API (blobstore/gcs でファイルを動的に作成する一般的な方法) は廃止されたため、使用しないでください。代わりに、上記の Google Cloud Storage Client API を使用してください。

もちろん、正常にダウンロードされた後に生成されたファイルを削除したり、cron ジョブを実行して一定期間後にリンク/ファイルを期限切れにすることができます。

特定のユース ケースによっては、これがより効果的なパスになる場合があります。

于 2015-06-30T20:16:16.057 に答える
0

DeadlineExceededError は、UrlFetch 呼び出しではなく、着信要求に 60 秒以上かかったことを意味します。

CSV ファイルを生成するコードを、基本スケーリングまたは手動スケーリングでセットアップした別のモジュールにデプロイします。CSV をダウンロードする URL はhttp://module.domain.comになります。

リクエストは、基本スケーリングまたは手動スケーリングのモジュールで無期限に実行できます。

于 2015-06-23T10:37:32.197 に答える