How to restart tweepy script in case of error?

匿名 (未验证) 提交于 2019-12-03 01:58:03

问题:

I have a python script that continuously stores tweets related to tracked keywords to a file. However, the script tends to crash repeatedly due to an error appended below. How do I edit the script so that it automatically restarts? I've seen numerous solutions including this (Restarting a program after exception) but I'm not sure how to implement it in my script.

import sys import tweepy import json import os  consumer_key="" consumer_secret="" access_key = "" access_secret = ""  auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) api = tweepy.API(auth) # directory that you want to save the json file os.chdir("C:\Users\json_files") # name of json file you want to create/open and append json to save_file = open("12may.json", 'a')  class CustomStreamListener(tweepy.StreamListener):     def __init__(self, api):         self.api = api         super(tweepy.StreamListener, self).__init__()          # self.list_of_tweets = []      def on_data(self, tweet):         print tweet         save_file.write(str(tweet))      def on_error(self, status_code):         print >> sys.stderr, 'Encountered error with status code:', status_code         return True # Don't kill the stream         print "Stream restarted"      def on_timeout(self):         print >> sys.stderr, 'Timeout...'         return True # Don't kill the stream         print "Stream restarted"  sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api)) sapi.filter(track=["test"])

===========================================================================

Traceback (most recent call last):   File "C:\Users\tweets_to_json.py", line 41, in      sapi.filter(track=["test"])   File "C:\Python27\lib\site-packages\tweepy-2.3-py2.7.egg\tweepy\streaming.py", line 316, in filter     self._start(async)   File "C:\Python27\lib\site-packages\tweepy-2.3-py2.7.egg\tweepy\streaming.py", line 235, in _start     self._run()   File "C:\Python27\lib\site-packages\tweepy-2.3-py2.7.egg\tweepy\streaming.py", line 165, in _run     self._read_loop(resp)   File "C:\Python27\lib\site-packages\tweepy-2.3-py2.7.egg\tweepy\streaming.py", line 206, in _read_loop     for c in resp.iter_content():   File "C:\Python27\lib\site-packages\requests-1.2.3-py2.7.egg\requests\models.py", line 541, in generate     chunk = self.raw.read(chunk_size, decode_content=True)   File "C:\Python27\lib\site-packages\requests-1.2.3-py2.7.egg\requests\packages\urllib3\response.py", line 171, in read     data = self._fp.read(amt)   File "C:\Python27\lib\httplib.py", line 543, in read     return self._read_chunked(amt)   File "C:\Python27\lib\httplib.py", line 603, in _read_chunked     value.append(self._safe_read(amt))   File "C:\Python27\lib\httplib.py", line 660, in _safe_read     raise IncompleteRead(''.join(s), amt) IncompleteRead: IncompleteRead(0 bytes read, 1 more expected)

回答1:

Figured out how to incorporate the while/try loop by writing a new function for the stream:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!