Riesecuzione di attività push non riuscite

L'elaborazione delle attività push tramite una coda di attività può non riuscire per diversi motivi. Se un gestore non riesce a eseguire un'attività (e quindi restituisce un codice di stato HTTP al di fuori dell'intervallo 200-299), App Engine ritenta l'attività finché non va a buon fine.

Per impostazione predefinita, il sistema riduce gradualmente la frequenza dei tentativi per evitare di sovraccaricare l'applicazione con troppe richieste, ma pianifica i tentativi di ripetizione in modo che si ripetano al massimo una volta all'ora finché l'attività non va a buon fine.

Ripetere le attività

Puoi personalizzare il tuo schema per i tentativi di ripetizione delle attività aggiungendo l'elemento dei parametri di ripetizione in queue.yaml. Questa aggiunta ti consente di specificare il numero massimo di tentativi di ripetizione delle attività non riuscite in una coda specifica. Puoi anche impostare un limite di tempo per i tentativi di ripetizione e controllare l'intervallo tra i tentativi.

L'esempio seguente mostra vari scenari di ripetizione:

  • In fooqueue, le attività vengono ripetute fino a sette volte e per un massimo di due giorni dal primo tentativo di esecuzione. Una volta superati entrambi i limiti, l'operazione non riesce in modo permanente.
  • In barqueue, App Engine tenta di ripetere le attività, aumentando linearmente l'intervallo tra ogni tentativo di ripetizione fino a raggiungere il backoff massimo e ripetendo indefinitamente all'intervallo massimo (quindi gli intervalli tra le richieste sono 10 secondi, 20 secondi, 30 secondi, ..., 190 secondi, 200 secondi, 200 secondi, ...).
  • In bazqueue, l'intervallo tra i tentativi inizia a 10 secondi, quindi raddoppia tre volte, poi aumenta linearmente e infine ripete indefinitamente all'intervallo massimo (quindi gli intervalli tra le richieste sono 10 secondi, 20 secondi, 40 secondi, 80 secondi, 160 secondi, 240 secondi, 300 secondi, 300 secondi, ...).
  queue:
  - name: fooqueue
    rate: 1/s
    retry_parameters:
      task_retry_limit: 7
      task_age_limit: 2d
  - name: barqueue
    rate: 1/s
    retry_parameters:
      min_backoff_seconds: 10
      max_backoff_seconds: 200
      max_doublings: 0
  - name: bazqueue
    rate: 1/s
    retry_parameters:
      min_backoff_seconds: 10
      max_backoff_seconds: 300
      max_doublings: 3

Passaggi successivi