2

내가 파이썬이 무한한 루프의 모든 초 Google TaskQueue REST API에서 프로세스 임대 작업 :구글 작업 대기열 REST 풀 때때로

credentials = GoogleCredentials.get_application_default() 
task_api = googleapiclient.discovery.build('taskqueue', 'v1beta2', credentials=credentials) 
while True: 
    tasks = task_api.tasks().lease(...).execute() 
    time.sleep(1) 

과정은 때때로 시간 동안 잘 실행합니다. 내부 오류가

프로세스는 구글 컴퓨팅에서 실행되는 백엔드에서 일어난

  • 500

    • 500 백엔드 오류
    • 503 백엔드 오류 : 그러나 때때로 HTTP 오류 중 하나가 자주 충돌 엔진 서버. GOOGLE_APPLICATION_CREDENTIALS env 변수로 지정된 서비스 계정 키를 사용합니다. 이 항목이 Google 작업 대기열 버그입니까? 아니면 놓친 것이 있습니까? 예 : 모든 임대 요청 전에 자격 증명을 다시 읽어야합니까?

  • +1

    백엔드 오류는 홍수 예방입니다. Google은 지수 적 백 오프를 구현할 것을 권장합니다. – DaImTo

    +0

    @DalmTo 일부 문서에 대한 링크를 게시 할 수 있습니까? – xmedeko

    +1

    당신은 두 사람이 Google 검색의 힘을 가지고 있습니다. Google 오류는 시스템 전반에 걸쳐 모든 API에 유용합니다. https://developers.google.com/drive/v3/web/handle-errors#500_backend_error – DaImTo

    답변

    2

    @DalmTo가 주석에 대답 한 직후 나는 대답을 요약하고 Python 솔루션을 추가합니다.

    Google 5xx의 백업 오류는 홍수 예방이며 exponential backoff을 구현하는 것이 좋습니다. Google 드라이브 API와의 연결 지점에도 불구하고 Google 오류는 모든 API (GAE 포함)에 대해 시스템 전체에 적용됩니다. 드물게 6 번 이상 재 시도해야 반응을 보일 수 있습니다.

    가 googleapiclient 소스를 파고 후, 나는 지수 백 오프가 이미이 라이브러리에서 구현되는 것으로 나타났습니다, 그래서 해결책은 죽은 간단합니다 http.py::_should_retry_response() 쇼의

    tasks = task_api.tasks().lease(...).execute(num_retries=6) 
    

    원천, 그 옆에 HTTP 5XX JSON 응답에 userRateLimitExceeded 또는 rateLimitExceeded 오류가있는 경우에도 요청이 반복됩니다.