SqlAlchemy слишком много клиентов уже ошибка

Я довольно новичок в фреймворке python и пирамиды. Недавно я познакомился с SQLSoup, чтобы позаботиться о потребностях моей базы данных (postgres).

dbEngine1 = SqlSoup(settings['sqlalchemy.db1.url'])
users = dbEngine1.users.fetchall()

Все работает отлично, однако после короткого периода использования приложения пирамиды я получаю это сообщение об ошибке. Мне нужно убить пирамиду, чтобы освободить все бездействующие соединения в postgres (около 50 бездействующих соединений, прежде чем выдавать исключение ниже)

sorry, too many clients already

Мой вопрос в том, как закрыть это бездействующее соединение, я попытался добавить строку кода, как показано ниже, но это не помогает.

dbEngine1 = SqlSoup(settings['sqlalchemy.db1.url'])
users = dbEngine1.users.fetchall()
dbEngine1.engine.connect().close()

Любой указатель от гуру SQLAlchemy?


person carbotex    schedule 10.12.2011    source источник


Ответы (1)


Похоже, вы создаете dbEngine1 при каждом запросе к вашему приложению Pyramid.

Для правильного использования SqlSoup в веб-приложении необходимо использовать сеансы SA.

См. раздел «Доступ к сеансу» на этой странице.

как мне закрыть это неработающее соединение

SqlSoup, такой как необработанный SA, использует пул соединений, каждое соединение в пуле в состоянии ожидания выполняет запрос util. Этот пул соединений должен быть создан один раз.

person estin    schedule 10.12.2011
comment
неработающая ссылка для доступа к сеансу - person TheGrimmScientist; 01.08.2017