Python调用接口鲁棒化处理防止阻塞
如果是同其他团队或者系统协作开发,无法保证对方的接口不出问题,所以要考虑一种鲁棒的方法,保证自己的程序不管什么情况下都可以有合适的值返回。
1.如果调用对方接口网络不同,或者服务挂掉
这时候使用try+request自带的timeout功能进行异常处理
timeout的功能是如果在规定时间内接口没有返回或者读取完成,则抛出异常。
再使用try捕获异常并返回一个相对靠谱的定值。
2.如果调用对方接口返回出错,可能是对方更改调用方式,参数等原因,接口返回非200
这时候就判断一个返回值是不是200,如果不是,就返回一个靠谱的定值。
通过以上两个方法,就可以让自己的服务在接口不通或者请求失败的时候还能提供一个基础服务。以上两个方法都需要记录相关情况到日志中,这样有迹可循。
当然这个情况是应用在该接口不是关键接口的情况,如果该接口的返回是程序必不可少的参数,那么只能保证服务不报错,但是质量无法保证。
例子:
1 url="http://192.168.x.x/xxx/xxxx" 2 headers = {'Content-Type': 'application/json'} 3 data_json = {} 4 fake_res=xxx 5 6 try: 7 res = requests.post(url,data=json.dumps(data_json),headers=headers,timeout=(3,2)) 8 except Exception as e: 9 print('接口不通') 10 return fake_res 11 if res.status_code!=200: 12 print('接口返回报错') 13 return fake_res
else:
res=json.loads(res.text)
... ...