Как обрабатывать ошибку тайм-аута запроса (408) в boto?

Мы используем метод domain.select (), который предоставляет boto, для запроса SimpleDB. Для небольших запросов (запросы, включающие несколько часов данных) этот метод работает нормально. Но когда я начинаю использовать несколько потоков и более длинные запросы (24 часа данных), он начинает тайм-аут, выдавая следующую ошибку на stdout:

-------------------------
         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?

5
задан Sujit 25 August 2011 в 15:31
поделиться