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

如何使用Python Requests获取Dynatrace API的CSV格式结果?

正确获取Dynatrace API的CSV格式输出

你的问题出在两个核心点:请求头字段拼写错误,以及用了错误的方式解析返回内容。以下是具体修正方案:

关键修正项

  • 修正请求头字段:HTTP标准的接受格式字段是Accept,你写的Accepts是拼写错误,这会导致API忽略你对CSV的偏好,大概率返回默认的JSON格式。
  • 改用文本方式获取内容:CSV是纯文本结构,不能用resp.json()解析,直接用resp.text就能拿到原始的逗号分隔文本。

修正后的完整代码

import requests

headers = {
    "Authorization": "API-Token XXX",
    # 修正字段名,明确指定接受CSV(也可以保留权重设置:"text/csv, application/json; q=0.1",但字段名必须是Accept)
    "Accept": "text/csv"
}

url = "https://dynatrace.glb.platform.dxc.com:443/e/xxx/api/v2/metrics/query?metricSelector=(builtin:host.cpu.usage:splitBy(dt.entity.host):avg):limit(2):names&from=2024-11-11T00:10:00Z&to=2024-11-17T23:55:00Z&resolution=Inf"

resp = requests.get(url, headers=headers, timeout=10)
# 可选:检查请求是否成功,失败则抛出异常,方便排查问题
resp.raise_for_status()

# 获取CSV格式的文本内容
csv_data = resp.text

# 直接打印输出CSV内容
print(csv_data)

# 或者保存到本地CSV文件
with open("dynatrace_cpu_metrics.csv", "w", encoding="utf-8") as file:
    file.write(csv_data)

兼容场景处理(可选)

如果需要同时兼容CSV和JSON返回(比如API在某些情况下不支持CSV),可以把Accept头设为"text/csv, application/json; q=0.1",然后先判断响应类型再选择解析方式:

if resp.headers.get("Content-Type") == "text/csv":
    csv_data = resp.text
else:
    json_data = resp.json()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:02:08