Python新手求助:如何循环调用API获取多份过期证书路径并传递至后续函数
解决多份过期证书的批量处理问题
问题根源
你的当前函数仅通过parse_json['Certificates'][0]['DN']取到了第一个证书的路径,因此无法返回多份证书的信息。要处理批量证书,需要收集所有符合条件的证书路径,再逐个传递给后续函数。
修改后的证书查询函数
优化后的函数会返回所有即将过期证书的路径列表,同时去掉不必要的全局变量,让代码更规范:
from datetime import datetime, timedelta import requests def find_expiring_certificate(): access_token = get_authorization() # 测试用:获取未来2000天的日期,实际使用时可改为31天 greater = datetime.today() + timedelta(days=2000) format_greater_iso = greater.isoformat() # 使用f-string拼接URL更简洁易读 url = f"base_url/vedsdk/certificates?validtoless={format_greater_iso}" headers = { 'Accept': 'application/json', # 修正原代码的拼写错误 'Authorization': f'Bearer {access_token}' } # GET请求无需payload,可省略该参数 response = requests.request("GET", url, headers=headers) # 直接用response.json()解析返回的JSON,无需手动调用json.loads parse_json = response.json() # 用列表推导式收集所有证书的DN路径 cert_paths = [cert['DN'] for cert in parse_json['Certificates']] return cert_paths
批量处理证书路径
拿到所有证书路径列表后,通过循环逐个传递给后续函数(如下载证书的函数):
# 示例后续处理函数:根据证书路径下载证书 def download_certificate(cert_path): # 这里编写下载证书的逻辑,比如调用API或读取本地文件 print(f"正在处理证书:{cert_path}") # 获取所有即将过期的证书路径 expiring_cert_paths = find_expiring_certificate() # 循环逐个处理每个证书 for cert_path in expiring_cert_paths: download_certificate(cert_path)
关键优化点
- 避免全局变量:用返回列表的方式传递数据,避免全局变量带来的代码耦合问题
- 批量收集数据:通过列表推导式遍历所有证书条目,一次性收集所有需要的路径
- 代码简洁性:使用f-string拼接字符串、
response.json()解析JSON,修正原代码的拼写错误 - 循环处理:通过for循环遍历列表,将每个证书路径单独传递给后续函数处理
内容的提问来源于stack exchange,提问作者unrealmatt
相关产品推荐
相关产品推荐

