googleads / googleads/googleads-python-lib
Improve Ad Manager's WaitForReport polling mechanism
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 749
- Fork
- 967
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
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.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia in googleads/ad_manager.py, nel metodo WaitForReport di AdManager, prestando particolare attenzione alla chiamata time.sleep(30) e ai controlli dello stato specifici della versione. Esamina il flusso di polling esistente e determina il comportamento di backoff previsto; il lavoro è completo quando il polling del report raggiunge ancora lo stato COMPLETED o FAILED utilizzando ritardi crescenti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- api
- Tipo di issue
- Funzionalità
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 42/100