アップデート:
私はこれを回答済みから元に戻しました。これは、説得力のあるニックの回答で提示された解決策を試し、Googleのurlfetchに切り替えたためです。
logging.debug("starting urlfetch for http://%s%s" % (self.host, self.url))
result = urlfetch.fetch("http://%s%s" % (self.host, self.url), payload=self.body, method="POST", headers=self.headers, allow_truncated=True, deadline=5)
logging.debug("finished urlfetch")
しかし、残念ながらfinished urlfetch
印刷されることはありません-ログにタイムアウトが発生しているのがわかります(5秒後に200が返されます)が、実行が戻ってこないようです。
こんにちは、みんな-
Twitterのストリーミング(別名ファイアホース)APIをGoogle App Engineで試してみようとしています(GAEとの接続を永続的に開いたままにすることはできないため、これはおそらく長期的なプレイではないことを認識しています)。これまでのところ、Twitterから返された結果を実際にプログラムで解析することができませんでした。
いくつかのコード:
logging.debug("firing up urllib2")
req = urllib2.Request(url="http://%s%s" % (self.host, self.url), data=self.body, headers=self.headers)
logging.debug("called urlopen for %s %s, about to call urlopen" % (self.host, self.url))
fobj = urllib2.urlopen(req)
logging.debug("called urlopen")
これを実行すると、残念ながら、デバッグ出力にcalled urlopen
印刷された行が表示されません。何が起こっているのかというと、Twitterは接続を開いたままにし、サーバーが接続を終了しないためにurllib2が返されないのではないかと思います。
Wiresharkは、リクエストが適切に送信され、レスポンスが結果とともに返されることを示しています。
リクエストヘッダーに追加しようとしConnection: close
ましたが、成功しませんでした。
これを機能させる方法について何かアイデアはありますか?