我们正在使用 boto 提供的 domain.select() 方法来查询 SimpleDB。对于较小的查询(涉及几个小时数据的查询),此方法可以正常工作。但是当我开始使用多个线程和更长的查询(24 小时的数据)时,它开始超时,在标准输出上出现以下错误:
-------------------------
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>
遇到此错误时,我想实现重试机制(指数退避)。Boto 不会为此错误抛出任何异常,只是将其打印出来。要实现重试机制,我需要某种错误代码或异常来知道发生了错误。
关于如何在博托中实现这一目标的任何想法?