SqlAlchemy «слишком много клиентов уже» ошибка - PullRequest
2 голосов
/ 10 декабря 2011

Я довольно новичок в 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?

1 Ответ

1 голос
/ 10 декабря 2011

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

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

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

как закрыть это простое соединение

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

...