PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Erreur Postgres SSL SYSCALL :EOF détecté avec python et psycopg

L'erreur :psycopg2.operationalerror: SSL SYSCALL error: EOF detected

La configuration :Flux d'air + Redshift + psycopg2

Quand :les requêtes prennent long temps d'exécution (plus de 300 secondes).

Un délai d'attente de socket se produit dans cette instance. Ce qui résout cette variante spécifique de l'erreur consiste à ajouter des arguments keepalive à la chaîne de connexion.

keepalive_kwargs = {
    "keepalives": 1,
    "keepalives_idle": 30,
    "keepalives_interval": 5,
    "keepalives_count": 5,
}

conection = psycopg2.connect(connection_string, **keepalive_kwargs)

Redshift nécessite un keepalives_idle de moins de 300. Une valeur de 30 a fonctionné pour moi, votre kilométrage peut varier. Il est également possible que le keepalives_idle l'argument est le seul que vous devez définir - mais assurez-vous que keepalives est défini sur 1.

Lien vers la documentation sur postgres keepalives.

Lien vers la documentation sur le flux d'air indiquant un délai d'attente de 300.