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

使用Python Requests调用Netbox API无法获取全部VM的问题咨询

问题原因

Netbox API确实存在全局分页限制,默认配置的MAX_PAGE_SIZE值为1000——这意味着无论你在请求中设置多大的limit参数,单次返回的最大结果数都会被强制限制为1000。这个限制是Netbox后端的全局配置,目的是避免单次请求返回过大数据集引发性能问题。

解决方案:处理API分页

Netbox API内置分页机制,响应结果中会包含next字段,该字段指向包含下一页数据的API地址。我们可以通过循环请求next地址,直到next为null,从而获取所有VM数据。

修改后的代码示例:

import requests

token = "你的Netbox令牌"
url = "https://netbox/api/virtualization/virtual-machines/"
headers = {"Authorization": "Token " + token}
list_vm = []

while url:
    # 发送请求,禁用证书验证(生产环境建议启用)
    response = requests.get(url, headers=headers, verify=False)
    response.raise_for_status()  # 捕获HTTP请求错误
    data = response.json()
    
    # 提取当前页的VM名称
    for vm in data['results']:
        list_vm.append(vm['name'])
    
    # 更新url为下一页地址,无下一页则为None,循环终止
    url = data.get('next')

print(f"总共获取到{len(list_vm)}台VM")
print(list_vm)
补充说明
  • 每次请求默认获取1000条数据,若Netbox管理员修改过MAX_PAGE_SIZE配置,单次返回数量会对应调整,但分页逻辑依然适用。
  • 代码中加入response.raise_for_status()用于捕获HTTP请求错误(如令牌无效、API地址错误等),便于调试排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:31:07