我的脚本中有多个函数可以执行 REST API api 请求。因为我需要处理错误场景,所以我设置了如下重试机制。
no_of_retries = 3
def check_status():
for i in range(0,no_of_retries):
url = "http://something/something"
try:
result = requests.get(url, auth=HTTPBasicAuth(COMMON_USERNAME, COMMON_PASSWORD)).json()
if 'error' not in result:
return result
else:
continue
except Exception as e:
continue
return None
我有几种不同的方法可以执行类似的操作。我们怎样才能更好地避免重复可能是使用装饰器。
原文由 PGS 发布,翻译遵循 CC BY-SA 4.0 许可协议
不使用装饰器,可能更好的解决方案是将请求移动到它自己的函数中,从而得到类似于以下的结构:
这样,您就可以在封装请求时避免重复代码。如果您要使用装饰器,则需要包装整个
load_file()
方法,这将阻止您在此函数中进一步处理请求的结果。