Nous utilisons la méthode domain.select() fournie par boto pour interroger SimpleDB. Pour les requêtes plus petites (requêtes impliquant quelques heures de données), cette méthode fonctionne bien. Mais quand je commencer à utiliser plusieurs threads et des requêtes plus longues (24 heures de données), il commence à compter, donnant erreur suivant sur la sortie standard:Comment gérer l'erreur request timeout (408) dans boto?
-------------------------
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>
Je veux mettre en place un mécanisme de nouvelle tentative (backoff exponentielle), lorsque cela erreur est rencontrée. Boto ne lance aucune exception pour cette erreur et l'imprime simplement. Pour implémenter un mécanisme de réessai, j'ai besoin d'une sorte de code d'erreur ou d'exception pour savoir que l'erreur s'est produite.
Avez-vous des idées sur la façon de réaliser cela dans boto?
merci pour votre réponse. Oui, ça recommence sur 503, mais il n'y a aucun moyen de le savoir, ce qu'il fait avec 408, il ne lance aucune exception aussi ... la documentation de boto suce l'homme. – Sujit
Boto ne retentit pas sur une réponse 408 car il nous a été demandé, il y a plusieurs années, de ne pas le faire par AWS. Si la documentation AWS indique maintenant qu'elle doit être réessayée, alors boto doit être modifié pour réessayer. Je suggère de déposer un ticket sur github et je m'en occuperai personnellement. – garnaat
BTW, Sujit, une chance que vous pourriez être plus précis sur les problèmes avec boto docs? Je suis toujours heureux d'obtenir des suggestions d'amélioration de la part de la communauté. Merci! – garnaat