python - secret - tweepy se detiene después de unas horas
twitter python (2)
Intenta agregar un método on_disconnect
a tu clase. Podría ser que Twitter te esté desconectando (no es un error, tampoco es un tiempo de espera) y no manejas esto. Puede manejar diferentes errores de Twitter de forma diferente, si lo desea.
def on_disconnect(self, notice):
"""Called when twitter sends a disconnect notice
Disconnect codes are listed here:
https://dev.twitter.com/docs/streaming-apis/messages#Disconnect_messages_disconnect
"""
return
Consulte el módulo de streaming
de tweepy para obtener más información.
También puede intentar habilitar las advertencias de bloqueo en su streamer.filter()
. A continuación se encuentran todas las opciones y sus valores predeterminados de la fuente Tweepy:
def filter(self, follow=None, track=None, async=False, locations=None,
stall_warnings=False, languages=None, encoding=''utf8''):
Yo uso tweepy para transmitir algunos tweets. Este es mi procedimiento:
import tweepy
import json
consumer_key = "***"
consumer_secret = "***"
access_token_key="***"
access_token_secret="***"
auth1 = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth1.set_access_token(access_token_key, access_token_secret)
api = tweepy.API(auth1)
class StreamListener(tweepy.StreamListener):
def on_status(self, status):
try:
print status.text
except Exception, e:
print ''Encountered Exception Tweet:'', e
pass
return True
def on_error(self, status_code):
print ''Encountered error with status code:'' + repr(status_code)
return True
def on_data(self, data):
if ''in_reply_to_status_id'' in data:
status = tweepy.Status.parse(self.api, json.loads(data))
if self.on_status(status) is False:
return True
elif ''delete'' in data:
delete = json.loads(data)[''delete''][''status'']
if self.on_delete(delete[''id''], delete[''user_id'']) is False:
return True
elif ''limit'' in data:
if self.on_limit(json.loads(data)[''limit''][''track'']) is False:
return True
return True
def on_timeout(self):
print ''Timeout...''
return True
l = StreamListener()
streamer = tweepy.Stream(auth=auth1, listener=l, timeout=36000000)
setTerms = [''enbrel'']
streamer.filter(follow=None,track = setTerms)
Después de dos / tres horas, este procedimiento se detiene. No hay error de señal, tiempo de espera, etc. Simplemente no recibe más tweet. ¿Dónde estoy haciendo mal?
Es posible que desee iniciar la API con un tiempo de espera para comenzar con
api = tweepy.API(auth1,timeout=60)