Skip to content

Improve Ad Manager's WaitForReport polling mechanism #465

@svadali1

Description

@svadali1

Right now AdManager's WaitForReport waits for 30 seconds (via time.sleep(30)) if the report status is not COMPLETED or FAILED before checking the report status again.

Would it be reasonable to implement an exponential backoff strategy instead where we poll for the status of the report with an exponentially increasing delay? Something like the below seems to work:

wait_time_in_seconds = 1
exponential_backoff_multiplier = 2
...

while status != 'COMPLETED' and status != 'FAILED':
     _data_downloader_logger.debug('Report job status: %s', status)

        time.sleep(wait_time_in_seconds)

        if report_downloader._version > 'v201502':
            status = service.getReportJobStatus(report_job_id)
        else:
            status = service.getReportJob(report_job_id)['reportJobStatus']

        # Wait longer if we have to poll the report status again.
        wait_time_in_seconds *= exponential_backoff_multiplier

I will be happy to submit a PR if it makes sense to do the above change.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions