sql >> Databasteknik >  >> NoSQL >> MongoDB

Fel vid hämtning av tweets med Tweepy

Denna IncompleteRead felet brukar uppstå när din konsumtion av inkommande tweets börjar halka efter , vilket är vettigt i ditt fall med tanke på din långa lista med termer att spåra. Det allmänna tillvägagångssättet de flesta verkar ta (inklusive mig själv) är helt enkelt att undertrycka detta fel och fortsätta din insamling (se länken ovan).

Jag kommer inte helt ihåg om IncompleteRead kommer att stänga din anslutning (jag tror det kanske, eftersom min personliga lösning återansluter min ström), men du kan överväga något i stil med följande (Jag ska bara bearbeta det, det behöver förmodligen omarbetas för din situation ):

# 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
...

Återigen, jag slänger det där, men moralen i berättelsen är att det allmänna tillvägagångssättet här är att undertrycka felet och fortsätta.

REDIGERA (10/11/2016): Bara en användbar godbit för alla som har att göra med mycket stora mängder tweets – ett sätt att hantera det här ärendet utan att förlora anslutningstid eller tweets skulle vara att släppa dina inkommande tweets i en kölösning (RabbitMQ, Kafka, etc.) för att tas in/bearbetas av en applikation som läser från den där kön.

Detta flyttar flaskhalsen från Twitter API till din kö, som inte borde ha några problem att vänta på att du ska konsumera data.

Det här är mer en "produktions" mjukvarulösning, så om du inte bryr dig om att förlora tweets eller återansluta, är lösningen ovan fortfarande helt giltig.



  1. Selleri ger anslutningen återställs av peer

  2. Quarkus mongodb integration

  3. Laddar inledande data vid applikationsstart med Spring Data MongoDB

  4. Löpande handledare från värden, selleri från en virtualenv (Django-app)