通过分页从FB ads API检索异步广告见解结果

Dej*_*ell 5 python facebook facebook-ads-api

我正在使用facebook-python-ads-sdk对FB Insights API进行异步调用,如所述

params = {
    "time_increment": 1,
    "level": "ad",
    "date_preset": "last_28d",
    "breakdowns": "hourly_stats_aggregated_by_advertiser_time_zone",
    "limit": 1000
}

job = AdAccount("id").get_insights_async(params=params)
result_cursor = wait_for_async_job(job)
results = [item for item in result_cursor]

def wait_for_async_job(job):
    for _ in range(TIMEOUT):
        time.sleep(1)
        job = job.remote_read()
        status = job[AdReportRun.Field.async_status]
        if status == "Job Completed":
            return job.get_result()
Run Code Online (Sandbox Code Playgroud)

因此,检索last_28d的见解的工作在几分钟内完成,但是,对结果的分页可能要花一个小时!

分页异步作业是正确的方法吗?

Dej*_*ell 6

我正在发布答案,以便可以为遇到相同问题的其他开发人员提供帮助。

修改:

return job.get_result()
Run Code Online (Sandbox Code Playgroud)

至:

return job.get_result(params={"limit": 1000})
Run Code Online (Sandbox Code Playgroud)

这将对结果进行分页,跳转数为1000,而不是默认值25。

上述更改为我们节省了30分钟的运行时间。