Python呼叫介面魯棒化處理防止阻塞
阿新 • • 發佈:2022-12-03
如果是同其他團隊或者系統協作開發,無法保證對方的介面不出問題,所以要考慮一種魯棒的方法,保證自己的程式不管什麼情況下都可以有合適的值返回。
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 exceptException 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)
... ...