2017-10-27 1 views
1

의 재시도 최대 횟수 후 나는 구글-API - 파이썬 클라이언트를 사용하고 난 몇 가지 비동기 작업을위한 구글 앱 엔진 작업 큐를 사용하고 있습니다. 특정 태스크 큐에 대한 처리 실패 구글 애플 리케이션 엔진 작업 큐

, 나는 또한 작업이 시도되어야한다 시간의 최대 수를 설정하고 (내 경우 시도에서 성공 가능성이 적은을, 그래서 나는 그들을 제한하려는).

작업이 여전히 재시도 지정된 후에도 실패하는 경우를 처리 할 수있는 핸들러를 작성하는 방법이 있나요?

기본적으로 내 재시도 제한이 5 일 경우 5 회 실패한 재시도 후 작업을 다른 재시도 횟수만큼 재 시도 할 수있는 다른 대기열로 이동하려고합니다. 성공하기. here에서

나는 각 재 시도에 X-AppEngine에-TaskExecutionCount 헤더를 사용하여 작업이 마지막으로 실행하고이를 달성하려고 할 때 알아야 할 사용자 지정 논리를 쓸 수 있다고 생각하지만 난 알아 노력하고 있어요 더 깨끗한 방법이 있다면. (다큐먼트로부터) 그런데

X-AppEngine에-TaskExecutionCount 지정, 작업이 이전에 실행 단계 중에 실패 횟수. 이 수에는 사용 가능한 인스턴스 부족으로 인한 실패는 포함되지 않습니다.

답변

1

적어도 하나의 큐에서 다른 큐로 작업을 자동으로 이동하는 기능은 현재 지원되지 않습니다.

retry_parameters :

하나의 옵션은, 같은 큐에 작업을 계속 시도의 최대 수를 증가시키고 (재시도 사이의 시간 즉 증가) 재시도 백 오프 정책을 사용자 정의 할 retry_parameters을 사용하는 것입니다

선택 사항. 실패한 작업에 대한 다시 시도를 구성합니다. 이 또한 은 특정 큐에 작업을 실패 재시도 최대 횟수를 지정할 수 있습니다. 또한 재시도 시도에 대한 시간 제한을 설정하고 시도 사이의 간격을 제어 할 수 있습니다.

재시도 매개 변수는 다음 하위 요소를 포함 할 수 있습니다 :

  • task_retry_limit

    을 재 시도의 최대 수를 실패한 작업. task_age_limit으로 지정하면 App Engine은 두 한계에 도달 할 때까지 작업을 다시 시도합니다. 이 지정되면 작업이 으로 다시 시도되지 않습니다.

  • task_age_limit (푸시 큐) 재 시도에 대한

    제한 시간 작업이 처음 실행했을 때부터 측정 실패한 작업.기기 일 시간, D위한 초 S, 분 m, H이고 값은 시간 단위 뒤에 숫자이다. 예를 들어 값 5d은 작업의 첫 번째 실행 시도 후 5 일 후 제한을 지정합니다. 이 으로 지정되고 task_retry_limit가 인 경우 App Engine은 두 가지 한계에 도달 할 때까지 작업을 다시 시도합니다. 실패 후

  • min_backoff_seconds (푸시 큐)

    초의 최소 수는 재 시도하기 전에 작업을 대기. 실패 후

  • max_backoff_seconds (푸시 큐)

    초의 최대 수는 재 시도하기 전에 작업을 대기.

  • max_doublings (푸시 큐)

    증가가 일정하게 실패한 작업 전에 시도 간 간격은 두 배가 될 수있는 최대 횟수. 상수는 2**max_doublings * min_backoff_seconds**입니다.

그러나 증가의 패턴이 점진적 될 것입니다 - 각 실패 후 두 배로, 당신은 중요한 "단계"재시도 사이의 시간의 -like 증가를 얻을 수 없습니다. 그래도 추가 코딩이 필요없는 충분한 솔루션 일 수 있습니다. 개인적으로 나는이 접근법을 갈 것입니다.

또 다른 접근법은 "느린"정책을 시도 소망 한 다른 큐에, 그렇다면, 인큐 새로운 해당 태스크 실행이 원래 작업의 최종 재시인지 확인하는 로직을 추가하는 것이다. 나는 이것이 당신이 질문에서 언급하고 피하고 싶었던 것인지 확신 할 수 없습니다.

+0

1) 예, 코드에서 재시도 횟수 논리를 사용하지 않으려 고 시도했습니다. 2) 실패한 작업을 일반 작업과 분리하고 더 나은 명령을 제공하므로 다른 대기열로 이동하려고합니다. – Karthik

관련 문제