このIncompleteRead
エラーは通常、着信ツイートの消費量が遅れ始めたときに発生する傾向があります 、追跡する用語の長いリストを考えると、これはあなたの場合には理にかなっています。ほとんどの人が(私自身も含めて)採用していると思われる一般的なアプローチは、単にこのエラーを抑制してコレクションを続行することです(上記のリンクを参照)。
IncompleteRead
かどうかを完全に思い出せません 接続を閉じます(私の個人的なソリューションが私のストリームを再接続するため、そうなる可能性があります)が、次のようなものを検討することができます(私はそれをウィングするだけです、おそらくあなたの状況に合わせてやり直す必要があります> ):
# from httplib import IncompleteRead # Python 2
from http.client import IncompleteRead # Python 3
...
while True:
try:
# Connect/reconnect the stream
stream = Stream(auth, listener)
# DON'T run this approach async or you'll just create a ton of streams!
stream.filter(terms)
except IncompleteRead:
# Oh well, reconnect and keep trucking
continue
except KeyboardInterrupt:
# Or however you want to exit this loop
stream.disconnect()
break
...
繰り返しになりますが、私はただそこにそれを羽ばたかせていますが、話の教訓は、ここで採用されている一般的なアプローチは、エラーを抑制して続行することです。
編集(2016年10月11日): 非常に大量のツイートを処理する人にとっては便利な情報です。このケースをなしで処理する1つの方法です。 接続時間またはツイートを失うと、受信したツイートをキューイングソリューション(RabbitMQ、Kafkaなど)にドロップして、 fromを読み取るアプリケーションによって取り込み/処理されるようになります。 そのキュー。
これにより、ボトルネックがTwitter APIからキューに移動し、データの消費を問題なく待つことができます。
これは「本番」ソフトウェアソリューションであるため、ツイートを失ったり再接続したりする必要がない場合でも、上記のソリューションは完全に有効です。