Utilizziamo il metodo domain.select(), fornito da boto, per interrogare SimpleDB. Per le query più piccole (query che richiedono un paio d'ore di dati), questo metodo funziona correttamente. Ma quando ho iniziare a utilizzare più thread e le query più lunghe (24 ore di dati), inizia timeout, dando seguente errore su stdout:Come gestire l'errore di timeout della richiesta (408) in 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>
Voglio realizzare un meccanismo di tentativo (backoff esponenziale), quando questo si è verificato un errore Boto non lancia alcuna eccezione per questo errore e lo stampa semplicemente. Per implementare un meccanismo di tentativi, ho bisogno di un qualche tipo di codice di errore o eccezione per sapere che l'errore si è verificato.
Qualche idea su come ottenere questo in boto?
grazie per la vostra risposta. Sì, riprova su 503, ma non c'è modo di scoprirlo, cosa fa con 408, non lancia alcuna eccezione ... la documentazione di boto fa schifo all'uomo. – Sujit
Boto non riprova in risposta 408 perché ci è stato richiesto, diversi anni fa, di non farlo da AWS. Se la documentazione di AWS ora afferma che dovrebbe essere ritentata, allora boto dovrebbe essere cambiato per riprovare. Suggerirei di presentare un ticket su GitHub e me ne occuperò personalmente. – garnaat
BTW, Sujit, hai qualche possibilità di essere più specifico sui problemi con i documenti boto? Sono sempre felice di ricevere suggerimenti per migliorare la community. Grazie! – garnaat