Форум сайта python.su
пробовал установить постоянное соединение с БД по http://www.modpython.org/FAQ/faqw.py?req=show&file=faq03.003.htp
тут постоянные соединения создаются с помощью sqlalchemy.pool и MySQLdb.connect. пример проверил - работает.
нужно установить постоянное соединение с MySQL с помощью sqlalchemy.create_engine
в связи с этим пробую разобраться по http://www.sqlalchemy.org/docs/05/dbengine.html#dbengine_options
правильно ли понимаю, что либо мы указываем готовый объект pool,
либо указываем poolclass и набор параметров класса для создания объекта?
исходя из http://www.sqlalchemy.org/docs/05/sqlalchemy_pool.html получается, что мне нужен QueuePool.
Это класс, который поддерживает ограниченное число открытых соединений.
для QueuePool непонятно:
def __init__(self, creator, pool_size=5, max_overflow=10, timeout=30, **params)creator - это объект какого класса?
Офлайн
The main argument, `creator`, is a callable function that returns
a newly connected DB-API connection object.
Офлайн
определяю функцию, которая должна вернуть connected DB-API connection object:
def conn1():
import MySQLdb as mysql
a = mysql.connect( db="dbname", user="axe", host="localhost" )
return a
Отредактировано (Сен. 8, 2008 14:58:13)
Офлайн
Честно говоря, по примеру мало что понятно.
Я бы делал все-таки через poolclass.
И, кстати, QueuePool - вариант “по умолчанию”, умеющий раздуваться/сжиматься.
И еще. Насколько я помню, для MySQL использование recycle для постоянных соединение - обязательная штука.
Офлайн
пробую подключиться так:
db = create_engine( l_DBSettings,
poolclass=sqlalchemy.pool.QueuePool,
max_overflow=10,
pool_size=5,
pool_recycle = 1000,
pool_timeout=30
)
Андрей Светловчто значит ‘раздуваться/сжиматься’ ?
QueuePool - вариант “по умолчанию”, умеющий раздуваться/сжиматься.
Офлайн
axeКак ты это определяешь?
некоторые соединения остаются открытыми, некоторые закрываются почти сразу.
повторно не одно из соединений не используется.
Офлайн
смотрю в Менеджере сессий в dbForge Studio
хорошая прога, кстати. бесплатна для некоммерческого использования
Офлайн
axeПри таких настройках система ведет себя так:
пробую подключиться так:некоторые соединения остаются открытыми, некоторые закрываются почти сразу.db = create_engine( l_DBSettings,
poolclass=sqlalchemy.pool.QueuePool,
max_overflow=10,
pool_size=5,
pool_recycle = 1000,
pool_timeout=30
)
повторно не одно из соединений не используется.
Офлайн
пока ничего не получается :)
обратил внимание, что соединения с базой исчезают при перезагрузке apache
видимо, подключения хранятся в mod_python?
попробовал сделать консольное приложение работающее с базой.
соединения этого приложения в менеджере сессий не отображаются
(т.е. они сразу закрываются по завершению работы программы)
Офлайн
закрываются, конечно же :)
А как иначе? Если клиентский процесс закончен - все нужно завершить, файлы и соединения - закрыть.
Зачем apache перезагружать постоянно? Я наивно думал, что это - “вечно” живущий демон :)
Офлайн