Python Requests を使用して Twitter Streaming API を使用しようとしています。
ドキュメントに簡単な例があります:
import requests
import json
r = requests.post('https://stream.twitter.com/1/statuses/filter.json',
data={'track': 'requests'}, auth=('username', 'password'))
for line in r.iter_lines():
if line: # filter out keep-alive new lines
print json.loads(line)
これを実行すると、requests.post()
決して返されません。Twitter に確実に接続し、API からデータを受信していることを実験して証明しました。ただし、応答オブジェクトを返す代わりに、Twitter が送信するのと同じ量のデータを消費するだけです。requests.post()
上記のコードから判断すると、リアルタイムの結果を引き続き受け取ることができる Twitter down へのオープンな接続を持つ応答オブジェクトを返すことが期待できます。
(データを受信していることを証明するために、別のシェルで同じ資格情報を使用して Twitter に接続すると、Twitter は最初の接続を閉じ、呼び出しは応答オブジェクトを返しました。このr.content
属性には、接続が開いている間に受信したすべてのバックアップ データが含まれていました。 )
requests.post
ドキュメントには、提供されたすべてのデータを消費する前に返すために必要な他の手順については言及されていません。他の人は、この問題に遭遇することなく同様のコードを使用しているようです。
私は使用しています:
- パイソン 2.7
- Ubuntu 11.04
- リクエスト 0.14.0