Der Fehler:psycopg2.operationalerror: SSL SYSCALL error: EOF detected
Das Setup:Luftstrom + Rotverschiebung + psycopg2
Wann:Abfragen dauern lang Ausführungszeit (mehr als 300 Sekunden).
In diesem Fall tritt ein Socket-Timeout auf. Was diese spezielle Variante des Fehlers löst, ist das Hinzufügen von Keepalive-Argumenten zur Verbindungszeichenfolge.
keepalive_kwargs = {
"keepalives": 1,
"keepalives_idle": 30,
"keepalives_interval": 5,
"keepalives_count": 5,
}
conection = psycopg2.connect(connection_string, **keepalive_kwargs)
Redshift erfordert ein keepalives_idle
von weniger als 300. Ein Wert von 30 hat für mich funktioniert, Ihr Kilometerstand kann variieren. Es ist auch möglich, dass der keepalives_idle
Argument ist das einzige, das Sie setzen müssen - aber stellen Sie sicher, dass keepalives
auf 1 gesetzt.
Link zu Dokumenten zu Postgres-Keepalives.
Link zum Airflow-Dokument mit Hinweisen zum 300-Timeout.