sql >> Database >  >> NoSQL >> MongoDB

Fout bij het ophalen van Tweets met Tweepy

Deze IncompleteRead fout treedt meestal op wanneer uw verbruik van inkomende tweets achterop begint te raken , wat in uw geval logisch is gezien uw lange lijst met te volgen termen. De algemene benadering die de meeste mensen lijken te volgen (inclusief ikzelf) is om deze fout te onderdrukken en door te gaan met verzamelen (zie de link hierboven).

Ik kan me niet helemaal herinneren of IncompleteRead zal je verbinding verbreken (ik denk van wel, omdat mijn persoonlijke oplossing mijn stream opnieuw verbindt), maar je zou iets als het volgende kunnen overwegen (Ik ga er gewoon mee aan de slag, het moet waarschijnlijk worden aangepast voor jouw situatie ):

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

Nogmaals, ik ben er gewoon mee bezig, maar de moraal van het verhaal is dat de algemene benadering die hier wordt gevolgd is om de fout te onderdrukken en door te gaan.

BEWERKEN (10/11/2016): Gewoon een handig stukje voor iedereen die te maken heeft met zeer grote hoeveelheden tweets - een manier om deze zaak zonder aan te pakken het verliezen van verbindingstijd of tweets zou zijn om uw inkomende tweets in een wachtrij-oplossing (RabbitMQ, Kafka, enz.) te laten vallen om te worden opgenomen/verwerkt door een toepassing die van leest die wachtrij.

Dit verplaatst het knelpunt van de Twitter API naar uw wachtrij, wat geen probleem zou moeten zijn om te wachten tot u de gegevens verbruikt.

Dit is meer een "productie" software-oplossing, dus als je er niet om geeft tweets te verliezen of opnieuw verbinding te maken, is de bovenstaande oplossing nog steeds perfect geldig.



  1. MongoDB Regex Zoeken op Integer Value

  2. Meerdere zoekopdrachten uitvoeren in mongo`

  3. MongoError:niet gemachtigd om opdracht uit te voeren { find:app_updates, filter:{ key:0.0.1-admins }, limit:1, batchSize:1, singleBatch:true }

  4. WebSocket-verbinding met <URL> mislukt:fout tijdens WebSocket-handshake:onverwachte responscode:521