風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

Google App Engineのurlfetchで非同期リクエスト

待ってました

GAEのSDKVersion.1.2.3より、urlfetchの非同期リクエスト動作がサポートされました(詳細な仕様はこちら)。
なので、後れ馳せながら、

最近、なにしてた? - はてなのあの人

http://feedpalette.appspot.com/
Feedパレット - Feedパターンを作成・共用

で使ってみました。
応答速度が若干改善された気がします。

問題点

Feedパレットの方で、リダイレクトされた先のURLが必要なため、これまではurllib2.urlopen()の応答でgeturl()にて取得していたのですが、urlfetch.fetch()やrpc.get_result()の応答の方では、これに相当する機能が無いようです。
なので、一旦follow_redirectsをFalseにして、3xxが返ってきたら応答ヘッダのlocationを取得して再度リクエスト……という手順で取得しているのですが、これだと多段リダイレクトされた場合のコードを書くのが面倒で(なので現状は1段のみ対応)……もっとスマートな方法はないですかね。