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

本地运行正常的Python脚本在Github Actions中触发JSONDecodeError求助

问题排查与解决思路

1. API请求在Github Actions环境中未返回有效JSON

  • 原因:Github Actions服务器IP可能被API服务商拦截,返回验证码页面、访问拒绝提示等非JSON内容;或是环境变量配置错误,请求参数/认证信息不正确,API返回错误页面而非JSON。
  • 解决:
    • 在脚本中临时添加调试代码,打印API返回的原始内容,确认响应格式:
      response = requests.get(api_url, headers=headers)
      print("API返回原始内容:", response.text)
      data = response.json()
      
    • 检查Github Actions中配置的环境变量(如API密钥、token)是否与本地一致,必要时在YAML中添加步骤验证变量存在性(注意不要直接打印敏感信息)。

2. 网络访问限制

  • 原因:Github Actions运行环境的网络存在代理或防火墙限制,导致请求未成功获取数据,返回空内容或非JSON响应。
  • 解决:
    • 为请求添加超时设置,避免无限等待:
      response = requests.get(api_url, headers=headers, timeout=10)
      
    • 确认目标API是否允许Github Actions IP段访问,必要时联系API服务商将相关IP加入白名单。

3. 依赖版本不一致

  • 原因:本地requests版本与Github Actions中安装的版本存在差异,部分旧版本对特定JSON格式兼容性较差,引发解析错误。
  • 解决:
    • 在项目根目录创建requirements.txt文件,明确指定与本地一致的requests版本:
      requests==2.31.0
      
    • 在Github Actions的YAML配置中,通过pip install -r requirements.txt安装依赖,确保版本统一。

4. 响应编码不匹配

  • 原因:API返回内容的编码与requests默认解析编码不一致(比如返回GBK编码但默认用UTF-8解析),导致JSON解析失败。
  • 解决:
    • 手动指定响应编码后再解析:
      response.encoding = 'gbk'  # 根据API实际返回编码调整
      data = response.json()
      
    • 或直接解码响应字节内容:
      import json
      data = json.loads(response.content.decode('gbk'))
      

内容的提问来源于stack exchange,提问作者SOK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:45:13