PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Errore SYSCALL SSL di Postgres:EOF rilevato con python e psycopg

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

La configurazione:Flusso d'aria + Spostamento verso il rosso + psicopog2

Quando:le query richiedono un tempo lungo tempo di esecuzione (più di 300 secondi).

In questo caso si verifica un timeout del socket. Ciò che risolve questa specifica variante dell'errore è l'aggiunta di argomenti keepalive alla stringa di connessione.

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

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

Redshift richiede un keepalives_idle inferiore a 300. Un valore di 30 ha funzionato per me, il tuo chilometraggio può variare. È anche possibile che il keepalives_idle l'argomento è l'unico che devi impostare, ma assicurati che keepalives è impostato su 1.

Link ai documenti sui keepalive di Postgres.

Collegamento al documento di flusso d'aria che fornisce consulenza sul timeout 300.