如何为Python接口请求代码添加503状态码单次重试逻辑?
修改后的Anypoint日志获取代码及说明
调整后的完整代码
def verify_app_log_cur_day2(self, anypoint_monitoring, organization_id, env_id, applist, access_token): headers = {"Authorization": f"Bearer {access_token}"} payload = {} log_list = [] for item in applist: # 修正URL末尾多余的右括号,同时把Python关键字int改为合理参数名env_id url = f"{anypoint_monitoring}/organizations/{organization_id}/environments/{env_id}/applications/{item}/logs" # 首次请求接口 response = requests.request("GET", url, headers=headers, data=payload) # 首次返回503时重试一次 if response.status_code == 503: response = requests.request("GET", url, headers=headers, data=payload) # 最终响应不是503则加入结果列表 if response.status_code != 503: # 移除原代码多余的列表嵌套,直接存入JSON结果(若需保留嵌套可改回log_list.append([response.json()])) log_list.append(response.json()) return log_list
关键修改说明
- 修复两处基础问题:
- 参数名
int是Python内置关键字,改为env_id避免语法冲突 - 移除URL末尾误加的右括号
},确保请求地址合法
- 参数名
- 新增503重试逻辑:首次请求返回503时自动发起第二次请求,只有两次都返回503才跳过该应用的日志获取
- 优化结果存储逻辑:去掉原代码中不必要的列表嵌套,让结果结构更简洁
内容的提问来源于stack exchange,提问作者Dmytro Gordon
相关产品推荐
相关产品推荐

