실패한 푸시 작업 재시도

태스크 큐를 통해 처리 중인 푸시 태스크는 여러 가지 이유로 실패할 수 있습니다. 핸들러가 작업 실행에 실패하여 200~299 범위를 벗어나는 HTTP 상태 코드를 반환하면 App Engine은 성공할 때까지 작업을 재시도합니다.

기본적으로 시스템은 애플리케이션에 너무 많은 요청이 발생하지 않도록 점진적으로 재시도 횟수를 줄이지만 태스크가 성공할 때까지 재시도가 시간당 최대 한 번 발생하도록 예약합니다.

작업 재시도

queue.yamlretry 매개변수 요소를 추가하여 태스크 재시도의 고유 스키마를 맞춤설정할 수 있습니다. 이렇게 하면 특정 큐에서 실패한 태스크를 재시도할 최대 횟수를 지정할 수 있습니다. 또한 재시도에 시간 제한을 설정하고 시도 사이의 간격을 제어할 수 있습니다.

다음 예시에서는 다양한 재시도 시나리오를 보여줍니다.

  • fooqueue에서는 최초 실행 시도 후 최대 이틀 동안 재시도가 최대 7번 이루어집니다. 두 가지 한도를 모두 초과하면 영구적으로 실패합니다.
  • barqueue에서 App Engine은 최대 백오프에 도달할 때까지 각 재시도 간의 간격을 비례적으로 증가시키면서 태스크를 재시도하고 최대 간격에서는 무한정 재시도합니다. 따라서 요청 간 간격은 10초, 20초, 30초, ..., 190초, 200초, 200초, ...와 같이 됩니다.
  • bazqueue에서는 재시도 간격이 10초부터 시작하여 3회 동안 두 배로 증가한 후 비례적으로 증가하고 최대 간격에 도달하면 무한정 재시도합니다. 따라서 요청 간 간격은 10초, 20초, 40초, 80초, 160초, 240초, 300초, 300초, ...와 같이 됩니다.
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

다음 단계