You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:45:43