Como tentar executar novamente as tarefas push com falha

As tarefas push executadas na fila de tarefas podem falhar por diversos motivos. Se ocorrer falha na execução de uma tarefa, retornando um código de status HTTP fora do intervalo 200–299, o App Engine faz novas tentativas da tarefa até ter sucesso. Por padrão, o sistema reduz gradualmente a taxa de novas tentativas para evitar sobrecarregar o aplicativo com muitas solicitações, mas programa novas tentativas para que ocorram no máximo uma vez por hora até que a tarefa seja executada com sucesso.

Filas push e filas pull diferem no modo de repetir tarefas, como descrito nas seções a seguir.

Como repetir tarefas

Nas filas push, é possível especificar o próprio esquema de tentativas de tarefas, adicionando o elemento de parâmetros de tentativa no queue.yaml. Isso permite especificar o número máximo de vezes que tarefas com falhas são repetidas em uma fila específica. Você também pode definir um limite de tempo para novas tentativas e controlar o intervalo entre elas.

O exemplo a seguir demonstra vários cenários de novas tentativas:

  • Em fooqueue, as tarefas são repetidas até sete vezes e por até dois dias a partir da primeira tentativa de execução. Depois que ambos os limites são atingidos, elas falham permanentemente.
  • Em barqueue, o App Engine tenta repetir as tarefas, aumentando o intervalo linearmente entre cada tentativa, até alcançar a retirada máxima e reiniciar indefinidamente no intervalo máximo. Dessa forma, os intervalos entre as solicitações são: 10s, 20s, 30s, ..., 190s, 200s, 200s, ....
  • Em bazqueue, o intervalo de repetição começa em 10s, depois duplica três vezes, depois aumenta linearmente e, finalmente, tenta nova e indefinidamente no intervalo máximo. Dessa forma, os intervalos entre solicitações são: 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, ....
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

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Python 2