2

次のことを行うGoogleAppEngineアプリを作成したいと思います。

  1. クライアントが非同期httpリクエストを作成します
  2. サーバーはそのリクエストの処理を開始します
  3. クライアントは進行状況を取得するためにajaxhttpリクエストを行います

問題は、サーバーの処理(ステップ#2)に30秒以上かかる場合があることです。

Google Application Engineにスレッドを設定することはできず、すべてのタスクを30秒以内に完了する必要があります。そうしないと、タスクがシャットダウンされます。これを回避する方法はありますか?

また、バックエンドとしてpython-djangoを使用しています。

4

1 に答える 1

4

おそらくdeferred tasksを介して、 Task Queue APIを使用することをお勧めします。API により、タスク キューの操作が大幅に簡素化されます。deferred

基本的に、タスクを生成して処理を開始する必要があります。そのタスクは例外をキャッチし、( APIDeadlineExceededを介して) 再スケジュールして処理を続行する必要があります。deferredこれには、タスクが自身の進行状況を追跡できる必要があります。また、memcache で自身のステータスを更新することもできます。これを使用して、タスクのステータスをチェックするビューを作成できます。そのビューは、Ajax を介してポーリングできます。

于 2010-10-12T18:27:47.693 に答える