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.
Right now AdManager's WaitForReport waits for 30 seconds (via time.sleep(30)) if the report status is not
COMPLETED
orFAILED
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:
I will be happy to submit a PR if it makes sense to do the above change.