2011-08-19 2 views
5

boto가 제공하는 domain.select() 메소드를 사용하여 SimpleDB를 쿼리합니다. 작은 쿼리 (몇 시간의 데이터를 포함하는 쿼리)의 경우이 메서드가 올바르게 작동합니다. , 때를boto에서 요청 시간 초과 (408) 오류를 처리하는 방법?

------------------------- 
     4 0 8 
... 
<?xml version="1.0"?> 
<Response><Errors><Error><Code>QueryTimeout</Code><Message>A timeout occurred when attempting to query domain 'd110824' with query expression 'select * from `d110824` where `timestamp` &gt;= '2011-08-24T10:45:56' and `timestamp` &lt; '2011-08-25T10:45:56' and `identifier` = '00063F052C49' order by `timestamp` asc </Message><BoxUsage>0.0055590278</BoxUsage></Error></Errors><RequestID>....</RequestID></Response> 

나는 재시도 메커니즘 (지수 백 오프)를 구현하려는 : 나는 여러 스레드 긴 쿼리 (데이터 24 시간)을 사용하여 시작할 때, 그것은 표준 출력에 다음과 같은 오류를주고, 타임 아웃 시작 오류가 발생했습니다. Boto는이 오류에 대한 예외를 throw하지 않고 단순히 인쇄합니다. 재시도 메커니즘을 구현하려면 오류가 발생했는지 알기 위해 어떤 종류의 오류 코드 나 예외가 필요합니다.

boto에서이를 수행하는 방법에 대한 의견이 있으십니까?

답변

4

BOTO가 아니라에, 503에서 재 시도하는 408

503 (사용할 수없는 서비스) 및 HTTP 오류의 일부 유형의 연결을 시도 포함 BOTO 재 시도를 할 것 몇 가지가있다 . 지수 적 백 오프를 사용하고 기본적으로 최대 5 회까지 시도합니다. 당신은 .boto 설정 파일에 num_retries을 설정하여 재시도 횟수를 변경할 수 있습니다

[Boto] 
num_retries = 3 

나는 내가 그렇게 권장 본 적이 408 AWS의 문서에 재 시도하지 않는 이유를 모르겠어요.

+0

답장을 보내 주셔서 감사합니다. 네, 503에서 다시 시도하지만, 알아낼 수있는 방법이 없습니다. 408에서 무엇을하는지, 어떤 예외도 발생시키지 않습니다 ... boto documentation man sucks man. – Sujit

+0

몇 년 전에 AWS가 아니라 요청을 받았기 때문에 Boto는 408 응답에서 다시 시도하지 않습니다. AWS 설명서에 재 시도가 필요하다고 표시되면 boto를 변경하여 다시 시도해야합니다. 나는 github에 표를 신청할 것을 제안 할 것이고 나는 그것을 개인적으로 돌볼 것이다. – garnaat

+1

BTW, Sujit, boto docs의 문제에 대해 더 구체적으로 설명 할 수있는 기회가 있습니까? 나는 항상 지역 사회로부터의 개선을위한 제안을 얻게되어 기쁘다. 감사! – garnaat