MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Erro ao buscar Tweets com Tweepy


Este IncompleteRead O erro geralmente ocorre quando o consumo de tweets recebidos começa a ficar para trás , o que faz sentido no seu caso, dada a sua longa lista de termos para rastrear. A abordagem geral que a maioria das pessoas parece estar adotando (inclusive eu) é simplesmente suprimir esse erro e continuar sua coleção (veja o link acima).

Não consigo me lembrar completamente se IncompleteRead fechará sua conexão (acho que pode, porque minha solução pessoal reconecta meu stream), mas você pode considerar algo como o seguinte (vou apenas improvisar, provavelmente precisa ser reformulado para sua situação> ):
# 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
...

Novamente, estou apenas improvisando, mas a moral da história é que a abordagem geral adotada aqui é suprimir o erro e continuar.

EDITAR (11/10/2016): Apenas um boato útil para quem lida com grandes volumes de tweets - uma maneira de lidar com este caso sem perder tempo de conexão ou tweets seria colocar seus tweets recebidos em uma solução de enfileiramento (RabbitMQ, Kafka, etc.) aquela fila.

Isso move o gargalo da API do Twitter para sua fila, que não deve ter nenhum problema em esperar que você consuma os dados.

Esta é mais uma solução de software de "produção", portanto, se você não se importa em perder tweets ou reconectar, a solução acima ainda é perfeitamente válida.