2014-12-16

Manejando errores de S3 en boto

Update: No sé porqué, después de usar la solución que puse acá sigo viendo errores de reseteo de conexión (error: [Errno 104] Connection reset by peer)

Estoy manejando archivos grandes (1 GB) en S3 con boto y, aún cuando estoy corriendo en una instancia en EC2, da errores. Si no entendí mal el código de boto, es porque hay algunas excepciones que da en las conexiones que no está reintentando.

Para entrar en el código de retries de boto con estas excepciones hay que registrarlas, al menos en boto 2.20.1.

Para eso, cuando me conecto a S3 hago:

import boto
import httplib
import socket
import ssl

s3 = boto.connect_s3(
    
    settings.s3_access_key_id,
    settings.s3_secret_access_key,
    https_connection_factory=(httplib.HTTPSConnection, (
        ssl.SSLError, socket.error
    ))
)

Eso evita los errores que estoy viendo (error: [Errno 104] Connection reset by peer y SSLError: The read operation timed out).

Espero que les sirva,
Aureliano.

No hay comentarios.: