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

Facebook Ads API中get_results()长度与遍历结果不一致问题

问题原因与解决方法

原因分析

  • 异步任务数据分批生成:Facebook Ads Insights的异步任务是逐步生成统计数据的。你调用len(async_job.get_results())时,任务可能仅完成了25条数据的生成;等你执行for循环遍历的时候,任务已经生成了更多数据,两次调用get_results()拿到的是任务不同阶段的结果。
  • Cursor对象的分页机制:get_results()返回的是SDK的Cursor对象,len()方法默认只计算当前已加载的第一页数据量(Facebook API默认每页25条);而遍历Cursor时会自动触发后续分页请求,拉取所有页的完整数据,所以最终收集到的记录数更多。

解决方法

方法1:先一次性获取所有结果再操作

把Cursor转换成列表,让len计算和遍历都基于同一个固定数据集:

# 一次性拉取所有结果到列表
all_results = list(async_job.get_results())
# 此时len(all_results)就是总记录数
print(len(all_results))
# 遍历同一个列表收集数据
data_list = []
for item in all_results:
    data = item.export_data()
    data_list.append(data)

方法2:确保异步任务完全完成后再获取结果

在调用get_results()前,等待异步任务彻底完成,避免中途数据还在生成:

import time

# 循环检查任务状态,直到完成
while async_job['async_status'] != 'Job Completed':
    time.sleep(5)  # 每5秒刷新一次状态
    async_job.refresh()

# 任务完成后再获取所有结果
all_results = list(async_job.get_results())
data_list = [item.export_data() for item in all_results]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:07:34