我们使用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` >= '2011-08-24T10:45:56' and `timestamp` < '2011-08-25T10:45:56' and `identifier` = '00063F052C49' order by `timestamp` asc </Message><BoxUsage>0.0055590278</BoxUsage></Error></Errors><RequestID>....</RequestID></Response>
我想实现一个重试机制(指数退避),当这遇到错误。博托不会为这个错误抛出任何异常,只是打印它。为了实现重试机制,我需要某种错误代码或异常来了解发生错误。
任何想法如何在博托实现这一点?
感谢您的回复。是的,它在503上重试,但是没有办法找到它,它对408做了什么,它也没有抛出任何异常...... boto文档吸人。 – Sujit
Boto不会在408响应中重试,因为几年前我们要求而不是AWS。如果AWS文档现在声明应该重试它,那么应该更改boto以重试它。我会建议在github上提交一张票,我会亲自处理。 – garnaat
顺便说一句,Sujit,你可以更具体地讨论boto文档的问题吗?我总是乐于从社区获得改进建议。谢谢! – garnaat