Efter en lang og brutal kamp, tror jeg, at jeg fik løst dette problem ved blot at følge den strategi, andre taler om, men ved at bruge selve psycopg2 connect-funktionen:
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)
Jeg så psycopg2 konsekvent hænge på langvarige forespørgsler, men nu ser problemet ud til at være fuldt løst.
Bemærk, at dette kan være ny funktionalitet, da dette spørgsmål er gammelt.