2011-08-19 7 views
5

botoが提供するdomain.select()メソッドを使用して、SimpleDBを照会しています。小さなクエリ(数時間のデータを含むクエリ)では、このメソッドはうまく動作します。私は 複数のスレッドと長いクエリ(データの24時間)を使用して起動したときしかし、それは標準出力に次のエラーを与え、タイムアウトを開始: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> 

ときに、この私が、再試行メカニズム(指数バックオフ)を実装したいですエラーが発生しました。 Botoはこのエラーの例外をスローせず、単純に出力します。再試行のメカニズムを実装するには、エラーが発生したことを知るために、何らかの種類のエラーコードまたは例外が必要です。

botoでこれを達成する方法についてのご意見はありますか?

答えて

4

後のBotoは503に再試行されますが、接続しようとすると408

にいくつかの503(サービス利用不可)を含むのbotoの再試行を行いますもの、およびHTTPエラーのいくつかの種類がありません。指数バックオフを使用し、デフォルトで最大5回試行します。あなたは.botoの設定ファイルにnum_retriesを設定することにより、再試行回数を変更することができます。

[Boto] 
num_retries = 3 

それが408に私がそうすることをお勧めします見てきたAWSのドキュメントを再試行していない理由を私は知りません。

+0

ご返信ありがとうございます。うん、それは503で再試行しますが、見つけ出す方法がありません.408で何をしたら、例外もスローされません... boto documentation sucks man。 – Sujit

+0

数年前にAWSに依頼するのではなく、リクエストされたため、Botoは408の応答で再試行しません。 AWSドキュメントで再試行する必要があると表示された場合は、botoを変更して再試行する必要があります。私はgithubのチケットを提出することをお勧めし、私は個人的に世話をします。 – garnaat

+1

BTW、Sujit、boto docsの問題についてより具体的になる可能性がありますか?私はいつもコミュニティからの改善の提案を得ることができて嬉しいです。ありがとう! – garnaat

関連する問題