Форум сайта python.su
Здравствуйте!
Подскажите, как реализовать изменение настроек соединение (IP, user …) для flask-alchemy во время выполнения приложения. Пока данная возможность реализуется путем перезагрузки. Может есть решение более удобное решение?
Спасибо!
Офлайн
Инициализация session где происходит, при старте приложения или динамически (lazy)?
Офлайн
Сейчас при старте приложения, но вот хотелось реализовать динамический подход. Не подскажите доки по такому варианту?
Офлайн
Расскажите что вызывает необходимость изменений настроек в runtime?
Какой use case?
Если runtime, то это, очевидно, не разделение на test, production.
Офлайн
И еще, какая сейчас структура приложения и можете ли вы ее менять, если возникнет такая необходимость для выполнения задачи?
Офлайн
Задача следующая. Есть редактор БД+конфигуратор+… и есть несколько (количество и парметры не определены на этапе разработки) серверов БД. Необходимо предоставить возможность подключить интерфейс к любому из серверов. Используется flask-admin+собственные представления. Если возникнет необходимость то можно поменять.
Офлайн
Почитайте, начиная с http://docs.sqlalchemy.org/en/latest/orm/session.html#adding-additional-configuration-to-an-existing-sessionmaker
Идея в том, чтобы с помощью Session.configure(bind=engine) выставлять новое соединение.
Для корректной работы объектов внутри сессии, возможно, понадобится сделать session.expire_all() - название пишу по памяти, но смысл, думаю, понятен.
Для проверки и изменения соединения напишите функцию, которая сравнивает свойства соединения и, при необходимости, закрывает старое (с предварительной проверкой активности!), открывает новое.
Потом делает Session.configure(bind=new_engine) и прочие вещи для переинициализации сессии и ее объектов.
Еще есть такой сниппет. И обратите внимание на последний комментарий по ссылке.
Еще можно инициализировать сессию с текущим соединением при начала запроса и убивать ее в конце запроса (см. стандартные события), но в этом случае нагрузка на сервер будет больше.
Этот способ оправдан, если у вас создается новый поток для обработки каждого запроса.
Офлайн
офф. Я тут понял что нихрена не понимаю в сессии алхимии. Может кто подсксзать где читать. А то я сам найду.
Офлайн
Да я видел эти доки уже, возможно, не внимательно прочитал. Но самое главное в том, что я использую flask-alchemy а не чистую алхимию, будут какие-то ньюансы? В смысле для алхимии все работает, а для фласка - нет.
Офлайн
PanovSergeyВ общем смысле это принцип factory, которым пронизана новая идеология flask вслед за Python 3, начиная с одного из способов устройства архитектуры приложения, заканчивая возможностью динамического подключения расширений.
офф. Я тут понял что нихрена не понимаю в сессии алхимии. Может кто подсксзать где читать. А то я сам найду.
aleПо большому счету, flask-alchemy - это набор так называемых хэлперов для алхимии.
Но самое главное в том, что я использую flask-alchemy а не чистую алхимию, будут какие-то ньюансы? В смысле для алхимии все работает, а для фласка - нет.
Офлайн