2016-06-21 20 views
0

我有这个Twitter应用程序,我在本地运行它有时会因互联网连接速度慢而失败。一旦失败,我不得不从Cmd重新启动应用程序。是有可能使机器人的睡眠,如果网络出现故障,然后重试代码Python Bot如何在网络故障后重试

import tweepy, time, sys 

argfile = str(sys.argv[1]) 
#APP 
#CONSUMER_KEY = '11' 
#CONSUMER_SECRET = '11' 
#ACCESS_KEY = '11' 
#ACCESS_SECRET = '11'  
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 
    auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) 
    api = tweepy.API(auth) 

    filename=open(argfile,'r') 
    f=filename.readlines() 
    filename.close() 

    for line in f: 
     api.update_status(line) 
     time.sleep(1200) 
+0

是的,使用'try'和'catch'然后再去。 – jonrsharpe

+0

嘿感谢您的帮助 我不是专家编程可以告诉我如何编写代码 – Leonardo19

+0

https://docs.python.org/3/tutorial/errors.html – jonrsharpe

回答

0

我会做这样的事情:

import requests 
import socket 

def get_json(url): 
    """Fetches JSON response from specified URL""" 

    fetched_data = dict() 
    try: 
     request = requests.get(url, timeout=2) 
     try: 
      fetched_data = request.json() 

      print("JSON response data:") 
      print(fetched_data) 

     except ValueError: 
      fetched_data["status"] = "60" 
    except requests.ConnectionError: 
     fetched_data["status"] = "60" 
    except requests.Timeout: 
     fetched_data["status"] = "60" 
    except requests.HTTPError: 
     fetched_data["status"] = "60" 
    except requests.URLRequired: 
     fetched_data["status"] = "60" 
    except requests.TooManyRedirects: 
     fetched_data["status"] = "60" 
    except socket.timeout: 
     fetched_data["status"] = "60" 

    return data 

后来,我只能将其包裹在某些while循环,检查状态如果状态是60,我会让它睡觉,否则做你想要的。

+0

为什么要单独捕获所有这些错误,如果结果是一样的吗? – jonrsharpe