2011-08-19 18 views
5

Estamos utilizando el método domain.select(), que boto proporciona, para consultar SimpleDB. Para consultas más pequeñas (consultas que involucran un par de horas de datos), este método funciona bien. Pero cuando empiezo a usar múltiples hilos y consultas más largos (24 horas de datos), comienza el tiempo de espera, dando siguiente error en la salida estándar:¿Cómo manejar el error de solicitud de tiempo de espera (408) en 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` &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> 

Quiero poner en práctica un mecanismo de reintento (retroceso exponencial), cuando este error se encuentra Boto no arroja ninguna excepción para este error y simplemente lo imprime. Para implementar un mecanismo de reintento, necesito algún tipo de código de error o excepción para saber que se ha producido el error.

¿Alguna idea sobre cómo lograr esto en boto?

Respuesta

4

Boto volverá a intentar en un 503, pero no en una

408.

Hay varias cosas que harán de reintento boto, incluyendo una (servicio no disponible) 503, y algunos tipos de errores HTTP al intentar conectarse . Utilizará un retroceso exponencial e intentará hasta 5 veces de manera predeterminada. Puede cambiar el número de reintentos estableciendo num_retries en el archivo de configuración .boto:

[Boto] 
num_retries = 3 

No sé por qué no vuelve a intentar en un 408. Los documentos de AWS que he visto recomienda hacerlo.

+0

gracias por su respuesta. Sí, vuelve a intentar en 503, pero no hay forma de averiguar qué hace con 408, tampoco arroja ninguna excepción ... la documentación del boto apesta al hombre. – Sujit

+0

Boto no vuelve a intentar en una respuesta 408 porque AWS lo solicitó hace varios años. Si la documentación de AWS ahora indica que se debe volver a intentar, se debe cambiar el boto para volver a intentarlo. Sugeriría que presenten un boleto en github y me ocuparé personalmente de él. – garnaat

+1

BTW, Sujit, ¿hay alguna posibilidad de que pueda ser más específico sobre los problemas con los documentos del boto? Siempre estoy feliz de recibir sugerencias de mejora de la comunidad. ¡Gracias! – garnaat

Cuestiones relacionadas