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

Python调用Zendesk API报KeyError: 'tickets',JSON存在对应键如何解决?

问题根因

  • 代码未做接口响应合法性校验,直接读取response.json()的tickets键:当接口返回非预期结果时(如401鉴权失败、429请求限流、5xx服务异常),Zendesk返回的JSON结构仅包含错误提示字段,不存在tickets键,直接读取就会触发KeyError。
  • 此前运行正常突然报错,最常见的原因是触发了Zendesk API的请求频率限制,其次是API凭证过期、对应视图ID的访问权限被调整。

修复方案

首先新增状态校验、容错处理和错误日志,定位具体错误后针对性处理,参考修改后的代码:

import time
import requests

# 原有其余代码保持不变
print(f'Getting tickets from view ID {view_id}')
url = f'https://****.zendesk.com/api/v2/views/{view_id}/tickets.json'
while url:
    response = requests.get(url, auth=auth)
    # 校验请求是否成功
    if response.status_code != 200:
        print(f"请求异常,状态码:{response.status_code},返回内容:{response.text[:200]}")
        # 限流场景自动重试
        if response.status_code == 429:
            wait_time = int(response.headers.get("Retry-After", 10))
            time.sleep(wait_time)
            continue
        # 其他异常可根据需求选择跳出循环或抛出错误
        break
    page_data = response.json()
    # 用get方法读取键,不存在时返回默认值,避免KeyError
    tickets = page_data.get("tickets", [])
    view_tickets.extend(tickets)
    url = page_data.get("next_page")

后续根据打印的错误信息处理即可:

  • 如果是401/403错误:检查API凭证是否有效、账号是否有对应视图的访问权限
  • 如果是404错误:检查视图ID是否被修改、删除
  • 如果是限流错误:可以在每次循环末尾增加1-2秒的固定延迟,降低请求频率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:08