Как избежать тайм-аутов сокетов в SQLAlchemy - PullRequest
5 голосов
/ 19 августа 2010

Я новичок в SQLAlchemy, но я пытаюсь использовать его для создания и заполнения базы данных для личного проекта. Я установил pool_timeout на 43200 (двенадцать часов), но я все еще получаю тайм-ауты сокетов.

engine = sqlalchemy.create_engine(
            'postgresql+pg8000://gdwatson:pass@localhost/dbname',
            pool_timeout=43200)
db.tables.meta.drop_all(bind=engine)
db.tables.meta.create_all(bind=engine)

conn = engine.connect()
dataset = build_dataset()
conn.execute(db.tables.mytable.insert(),
             dataset)
conn.close()

Я получаю socket.timeout: timed out после большого количества времени обработки, но, вероятно, меньше часа и, конечно, меньше двух. Это на самом деле три уровня - при обработке исключения тайм-аута произошло другое, а затем при обработке этого произошло еще одно. (Возможно, это повторная попытка библиотеки?) Исключение возникает в conn.execute, и я не знаю, как его предотвратить.

Поиск не дал ничего информативного. Я использую Python 3.1 и SQLAlchemy 0.6.1, для чего это стоит.

1 Ответ

2 голосов
/ 16 апреля 2011

Я не знаю, является ли это рекомендуемым методом, но вы можете периодически отправлять оператор SELECT 1 и убедиться, что соединение не бездействует.Вы также можете заглянуть в этот для получения некоторых указаний

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...