首页 > 解决方案 > Python facebook_business API 异步作业对完整结果进行分页

问题描述

Facebook 抱怨我对洞察 API 的 GET 请求太大,我需要通过它们的异步功能实现 POST 请求逻辑。

这是我的工作代码:

from facebook_business.api import FacebookAdsApi
fb_api = FacebookAdsApi.init(access_token=os.getenv('USER_API_TOKEN'))

from facebook_business.adobjects.adaccount import AdAccount
account = AdAccount('act_{}'.format(os.getenv('ADS_ACCT_ID')))

from facebook_business.adobjects.adreportrun import AdReportRun

date_start = "2021-03-15"
date_end = "2021-03-21"

from facebook_business.adobjects.adsinsights import AdsInsights
args = dict(
    fields=[
        AdsInsights.Field.campaign_name,
        AdsInsights.Field.ad_name,
        AdsInsights.Field.clicks,
    ],
    params={
        'time_range': {
            'since': date_start,
            'until': date_end,
        },
        'level': 'ad',
        'time_increment': 1
    },
    is_async=True,
)

async_job = account.get_insights(**args)

async_job.api_get()
while async_job[AdReportRun.Field.async_status] != "Job Completed":
    time.sleep(10)
    async_job.api_get()

time.sleep(10)
resp_data = async_job.get_result(params={"limit": 1000})

问题是这只返回 1000 行。如何对整个结果集进行分页?

标签: pythonfacebook-graph-api

解决方案


推荐阅读