我有以下代码模式来处理访问Twitter API时出现的各种异常。基本模式是:
while True:
try:
# 'access twitter api'
except tweepy.error.TweepError:
# 'handling the error'
我有多种方法,例如get_tweets()
,get_friends()
,所有这些都使用相同的错误处理模式。如何干这个?
例如,下面是我的get_tweets()
方法。如何在其他方法中重复使用此方法中的错误处理?
def get_tweets(self, screen_name):
while True:
try:
rs = self.api.user_timeline(screen_name=screen_name)
except tweepy.error.TweepError, e:
if e.response.status_code == 404:
print "%s does not exist" % (twitter_id)
return None
elif e.response.status_code == 429:
print "out of quota"
time.sleep(60 * 15)
continue
elif e.response.status_code == 503:
print "Twitter down"
time.sleep(60 * 15)
continue
else:
print "%s, %s" % (twitter_id, e)
continue
答案 0 :(得分:1)
如果except语句的内容重复多个位置,那么它可能是重用的好选择。
我看到你可以采取多种方式,这里有一些选择。
def get_tweets(self, screen_name):
while True:
try:
rs = self.api.user_timeline(screen_name=screen_name)
except tweepy.error.TweepError, e:
error_handler(e)
def error_handler(self, e):
# handle the error
当然,有了这个选项,我们最终会重复
while True:
try:
# access twitter api
except:
# handle error
2。相反,你可以创建一个通用的twitter调用函数,它接受方法和方法的一些参数。
def twitter_request(self, twitter_method, *args, **kwargs):
while True:
try:
twitter_method(*args, **kwargs)
except tweepy.error.TweepError, e:
# handle the error
def get_tweets(self, screen_name):
twitter_request(self.api.user_timeline, screen_name=screen_name)
如果您需要通过将错误处理函数作为参数添加到twitter_request