Tweepy stops after a few hours

I use tweepy to stream some tweet. This is my procedure:

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) 

After two / three hours, this procedure is terminated. Signal error, timeout, etc. He just doesn't get any more tweets. Where am I doing wrong?

+6
source share
2 answers

Try adding the on_disconnect method to your class. Maybe Twitter is turning you off (not a bug, not a timeout), and you are not coping with it. If you want, you can handle various Twitter errors.

 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 

Check out the streaming module tweepy for more information.

You can also try to enable block warnings in streamer.filter() . Below are all the parameters and their default values ​​from the Tweepy source:

 def filter(self, follow=None, track=None, async=False, locations=None, stall_warnings=False, languages=None, encoding='utf8'): 
+7
source

You might want to initiate a timeout api to start with

 api = tweepy.API(auth1,timeout=60) 
+1
source

All Articles