MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Błąd podczas pobierania tweetów za pomocą Tweepy

Ten IncompleteRead błąd zwykle pojawia się, gdy zużycie przychodzących tweetów zaczyna spadać , co ma sens w Twoim przypadku, biorąc pod uwagę długą listę haseł do śledzenia. Ogólnym podejściem, które wydaje się przyjmować większość ludzi (w tym ja), jest po prostu pominięcie tego błędu i kontynuowanie kolekcji (patrz link powyżej).

Nie pamiętam do końca, czy IncompleteRead zamknie Twoje połączenie (myślę, że może, ponieważ moje osobiste rozwiązanie ponownie łączy mój strumień), ale możesz rozważyć coś takiego (po prostu to zrobię, prawdopodobnie wymaga to przeróbki w Twojej sytuacji ):

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

Ponownie, po prostu to robię, ale morał z tej historii jest taki, że ogólne podejście przyjęte tutaj polega na stłumieniu błędu i kontynuowaniu.

EDYTUJ (10.11.2016): Po prostu przydatna ciekawostka dla każdego, kto ma do czynienia z bardzo dużą liczbą tweetów – jeden ze sposobów na poradzenie sobie z tą sprawą bez utrata czasu połączenia lub tweetów oznaczałaby upuszczenie przychodzących tweetów do rozwiązania kolejkowania (RabbitMQ, Kafka itp.) w celu ich przetworzenia/przetworzenia przez aplikację czytającą z ta kolejka.

To przenosi wąskie gardło z interfejsu API Twittera do kolejki, co nie powinno mieć problemu z oczekiwaniem na wykorzystanie danych.

Jest to bardziej oprogramowanie „produkcyjne”, więc jeśli nie zależy Ci na utracie tweetów lub ponownym połączeniu, powyższe rozwiązanie jest nadal całkowicie ważne.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose - uzyskaj długość tablicy w modelu

  2. Parsowanie danych z bazy danych w PUG

  3. Wskazówki dotyczące uruchamiania MongoDB w środowisku produkcyjnym za pomocą strumieni zmian

  4. Jak zaktualizować pola dokumentów MongoDB tylko wtedy, gdy nie istnieją?

  5. Odwołanie do schematu Mongoose i niezdefiniowany typ „ObjectID”