Setelah perjuangan panjang dan brutal, saya pikir saya memperbaiki masalah ini hanya dengan melakukan strategi yang dibicarakan orang lain, tetapi menggunakan fungsi koneksi psycopg2 itu sendiri:
from psycopg2 import connect
conn = connect(
database=database,
user=username,
password=password,
host=hostname,
port=port,
connect_timeout=3,
# https://www.postgresql.org/docs/9.3/libpq-connect.html
keepalives=1,
keepalives_idle=5,
keepalives_interval=2,
keepalives_count=2)
Saya melihat psycopg2 bertahan secara konsisten pada kueri yang sudah berjalan lama, tetapi sekarang masalah tersebut tampaknya telah teratasi sepenuhnya.
Perhatikan ini mungkin fungsi baru, karena pertanyaan ini sudah lama.