Python facebook_business API async job paginate over full results

Viewed 235

Facebook is complaining that my GET requests on the insights API are too large and I need to implement POST request logic via their async functionality.

Here's my working code for that:

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})

The problem is this only returns 1000 rows. How can I paginate over the full result set?

0 Answers
Related