태스크 큐를 통해 처리 중인 푸시 태스크는 여러 가지 이유로 실패할 수 있습니다. 핸들러가 작업 실행에 실패하여 200~299 범위를 벗어나는 HTTP 상태 코드를 반환하면 App Engine은 성공할 때까지 작업을 재시도합니다.
기본적으로 시스템은 애플리케이션에 너무 많은 요청이 발생하지 않도록 점진적으로 재시도 횟수를 줄이지만 태스크가 성공할 때까지 재시도가 시간당 최대 한 번 발생하도록 예약합니다.
태스크 재시도
queue.yaml에 retry 매개변수 요소를 추가하여 태스크 재시도의 고유 스키마를 맞춤설정할 수 있습니다. 이렇게 하면 특정 큐에서 실패한 태스크를 재시도할 최대 횟수를 지정할 수 있습니다. 또한 재시도에 시간 제한을 설정하고 시도 사이의 간격을 제어할 수 있습니다.
다음 예시에서는 다양한 재시도 시나리오를 보여줍니다.
fooqueue에서는 최초 실행 시도 후 최대 이틀 동안 재시도가 최대 7번 이루어집니다. 두 가지 한도를 모두 초과하면 영구적으로 실패합니다.
barqueue에서 App Engine은 최대 백오프에 도달할 때까지 각 재시도 간의 간격을 비례적으로 증가시키면서 태스크를 재시도하고 최대 간격에서는 무한정 재시도합니다. 따라서 요청 간 간격은 10초, 20초, 30초, ..., 190초, 200초, 200초, ...와 같이 됩니다.
bazqueue에서는 재시도 간격이 10초부터 시작하여 3회 동안 두 배로 증가한 후 비례적으로 증가하고 최대 간격에 도달하면 무한정 재시도합니다. 따라서 요청 간 간격은 10초, 20초, 40초, 80초, 160초, 240초, 300초, 300초, ...와 같이 됩니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eTasks in a queue that fail are automatically retried by App Engine until they succeed, unless the return is between 200-299.\u003c/p\u003e\n"],["\u003cp\u003eRetry attempts are reduced gradually to avoid overloading the application, and then recur at a maximum of once per hour.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003equeue.yaml\u003c/code\u003e file can be used to customize the retry scheme, including the maximum number of retries, time limits, and intervals between attempts.\u003c/p\u003e\n"],["\u003cp\u003eThe example demonstrates how to configure retry parameters, including setting limits and specifying different retry intervals with varying linear increases or doublings, allowing for fine-tuned task retry behavior.\u003c/p\u003e\n"]]],[],null,["# Retrying Failed Push Tasks\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\nGo Java PHP Python\n\nPush tasks being processed via a task queue can fail for many reasons. If a handler\nfails to execute a task (and therefore returns any HTTP status code outside of\nthe range 200--299), App Engine retries the task until it succeeds.\n| This API is supported for first-generation runtimes and can be used when [upgrading to corresponding second-generation runtimes](/appengine/docs/standard/\n|\n| /services/access). If you are updating to the App Engine runtime, refer to the [Upgrade to second-generation runtimes]() page to learn about your migration options for legacy bundled services.\n\nBy default, the system gradually reduces the retry rate to avoid overloading your application with too many\nrequests, but schedules retry attempts to recur at a maximum of once per hour\nuntil the task succeeds.\n\nRetrying tasks\n--------------\n\nYou can customize your own scheme for task retries by\nadding the [retry\nparameters](/appengine/docs/standard/reference/queueref#retry_parameters)\nelement in [`queue.yaml`](/appengine/docs/standard/reference/queueref). This\naddition allows you to specify the maximum number of times to retry failed tasks\nin a specific queue. You can also set a time limit for retry attempts and\ncontrol the interval between attempts.\n\nThe following example demonstrates various retry scenarios:\n\n- In `fooqueue`, tasks are retried up to seven times and for up to two days from the first execution attempt. After both limits are passed, it fails permanently.\n- In `barqueue`, App Engine attempts to retry tasks, increasing the interval linearly between each retry until reaching the maximum backoff and retrying indefinitely at the maximum interval (so the intervals between requests are 10s, 20s, 30s, ..., 190s, 200s, 200s, ...).\n- In `bazqueue`, the retry interval starts at 10s, then doubles three times, then increases linearly, and finally retries indefinitely at the maximum interval (so the intervals between requests are 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, ...).\n\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003cqueue-entries\u003e\n \u003cqueue\u003e\n \u003cname\u003efooqueue\u003c/name\u003e\n \u003crate\u003e1/s\u003c/rate\u003e\n \u003cretry-parameters\u003e\n \u003ctask-retry-limit\u003e7\u003c/task-retry-limit\u003e\n \u003ctask-age-limit\u003e2d\u003c/task-age-limit\u003e\n \u003c/retry-parameters\u003e\n \u003c/queue\u003e\n \u003cqueue\u003e\n \u003cname\u003ebarqueue\u003c/name\u003e\n \u003crate\u003e1/s\u003c/rate\u003e\n \u003cretry-parameters\u003e\n \u003cmin-backoff-seconds\u003e10\u003c/min-backoff-seconds\u003e\n \u003cmax-backoff-seconds\u003e200\u003c/max-backoff-seconds\u003e\n \u003cmax-doublings\u003e0\u003c/max-doublings\u003e\n \u003c/retry-parameters\u003e\n \u003c/queue\u003e\n \u003cqueue\u003e\n \u003cname\u003ebazqueue\u003c/name\u003e\n \u003crate\u003e1/s\u003c/rate\u003e\n \u003cretry-parameters\u003e\n \u003cmin-backoff-seconds\u003e10\u003c/min-backoff-seconds\u003e\n \u003cmax-backoff-seconds\u003e300\u003c/max-backoff-seconds\u003e\n \u003cmax-doublings\u003e3\u003c/max-doublings\u003e\n \u003c/retry-parameters\u003e\n \u003c/queue\u003e\n \u003c/queue-entries\u003e\n\nWhat's next\n-----------\n\n- Learn more about the [task queue parameters](/appengine/docs/standard/reference/queueref)."]]