1

その間、他の処理を行いながら、非同期の url fetch 呼び出しを使用して外部サーバーから情報にアクセスしています。元の (メイン) スレッドに戻らずに元の非同期 URL フェッチ呼び出しが失敗した場合、呼び出しを再試行するか、URL をバックアップ URL に変更できるようにしたいと考えています。これを行う最善の方法は、同期された URL フェッチを行うセカンダリ スレッドを生成することでしょうか (アプリ エンジンはマルチコアではないため、2 つのスレッドを切り替えるために一時停止/再開する必要があると思います)。それとも、URL フェッチ操作を再試行する前に、メイン スレッドがすべての処理を完了するのを待ったほうがよいでしょうか?

ありがとう!

4

1 に答える 1

1

同期 URLFetch を実行するセカンダリ スレッドを使用すると、ユース ケースで問題なく実行できます。非マルチコア CPU を使用しても、開発者の観点からはスレッドの操作には影響しません。これは、JVM や OS が処理するためです。

GAE はサンドボックス環境であるため、Google の API を使用してスレッドを作成する必要があることに注意してください。まだお持ちでない場合は、ここでApp Engine スレッドを生成する方法に関する短いドキュメントを参照できます。

生成されたスレッドの存続期間は、元の要求の存続期間に制限されていることに注意してください。(つまり、フロントエンド インスタンス リクエストの場合は 60 秒) もう 1 つの良いアイデアは、セカンダリ スレッドでリクエスト タイマーを使用して、2 回目の URLFetch 呼び出しを行う前に残りの利用可能な時間を定期的にチェックすることです。これにより、タイムアウト制限を調整したり、リクエストを正常に終了させることができます。十分な時間が残っていない場合。

于 2013-03-19T10:08:35.677 に答える