Dieses IncompleteRead
Fehler treten im Allgemeinen auf, wenn Ihr Konsum eingehender Tweets anfängt ins Hintertreffen zu geraten
, was in Ihrem Fall angesichts Ihrer langen Liste von zu verfolgenden Begriffen sinnvoll ist. Der allgemeine Ansatz, den die meisten Leute zu verfolgen scheinen (mich eingeschlossen), besteht darin, diesen Fehler einfach zu unterdrücken und Ihre Sammlung fortzusetzen (siehe den Link oben).
Ich kann mich nicht mehr vollständig erinnern, ob IncompleteRead
wird Ihre Verbindung schließen (ich denke, das könnte sein, weil meine persönliche Lösung meinen Stream wieder verbindet), aber Sie können Folgendes in Betracht ziehen (Ich werde es nur flügeln, es muss wahrscheinlich für Ihre Situation überarbeitet werden ):
# 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
...
Auch hier beflügele ich es nur, aber die Moral der Geschichte ist, dass der allgemeine Ansatz hier darin besteht, den Fehler zu unterdrücken und fortzufahren.
BEARBEITEN (11.10.2016): Nur ein nützlicher Leckerbissen für alle, die mit sehr großen Mengen an Tweets zu tun haben - eine Möglichkeit, diesen Fall ohne zu handhaben Der Verlust von Verbindungszeit oder Tweets würde darin bestehen, Ihre eingehenden Tweets in eine Warteschlangenlösung (RabbitMQ, Kafka usw.) zu werfen, damit sie von einer Anwendung, die von liest, aufgenommen/verarbeitet werden diese Warteschlange.
Dadurch wird der Engpass von der Twitter-API in Ihre Warteschlange verschoben, die problemlos darauf warten sollte, dass Sie die Daten verbrauchen.
Dies ist eher eine "Produktions"-Softwarelösung. Wenn Sie sich also nicht darum kümmern, Tweets zu verlieren oder die Verbindung wiederherzustellen, ist die obige Lösung immer noch vollkommen gültig.