Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Изменение настроек flask-alchemy runtime [RSS Feed]

#1 Фев. 19, 2014 10:41:45

ale
Зарегистрирован: 2014-02-19
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение настроек flask-alchemy runtime

Здравствуйте!
Подскажите, как реализовать изменение настроек соединение (IP, user …) для flask-alchemy во время выполнения приложения. Пока данная возможность реализуется путем перезагрузки. Может есть решение более удобное решение?
Спасибо!

Офлайн

#2 Фев. 19, 2014 11:58:52

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Изменение настроек flask-alchemy runtime

Инициализация session где происходит, при старте приложения или динамически (lazy)?



Офлайн

#3 Фев. 19, 2014 12:04:52

ale
Зарегистрирован: 2014-02-19
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение настроек flask-alchemy runtime

Сейчас при старте приложения, но вот хотелось реализовать динамический подход. Не подскажите доки по такому варианту?

Офлайн

#4 Фев. 19, 2014 13:16:11

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Изменение настроек flask-alchemy runtime

Расскажите что вызывает необходимость изменений настроек в runtime?
Какой use case?

Если runtime, то это, очевидно, не разделение на test, production.



Офлайн

#5 Фев. 19, 2014 13:17:31

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Изменение настроек flask-alchemy runtime

И еще, какая сейчас структура приложения и можете ли вы ее менять, если возникнет такая необходимость для выполнения задачи?



Офлайн

#6 Фев. 19, 2014 14:19:13

ale
Зарегистрирован: 2014-02-19
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение настроек flask-alchemy runtime

Задача следующая. Есть редактор БД+конфигуратор+… и есть несколько (количество и парметры не определены на этапе разработки) серверов БД. Необходимо предоставить возможность подключить интерфейс к любому из серверов. Используется flask-admin+собственные представления. Если возникнет необходимость то можно поменять.

Офлайн

#7 Фев. 19, 2014 20:44:32

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Изменение настроек flask-alchemy runtime

Почитайте, начиная с 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) и прочие вещи для переинициализации сессии и ее объектов.

Еще есть такой сниппет. И обратите внимание на последний комментарий по ссылке.


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



Офлайн

#8 Фев. 19, 2014 21:00:17

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Изменение настроек flask-alchemy runtime

офф. Я тут понял что нихрена не понимаю в сессии алхимии. Может кто подсксзать где читать. А то я сам найду.

Офлайн

#9 Фев. 19, 2014 22:14:27

ale
Зарегистрирован: 2014-02-19
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Изменение настроек flask-alchemy runtime

Да я видел эти доки уже, возможно, не внимательно прочитал. Но самое главное в том, что я использую flask-alchemy а не чистую алхимию, будут какие-то ньюансы? В смысле для алхимии все работает, а для фласка - нет.

Офлайн

#10 Фев. 19, 2014 22:55:35

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Изменение настроек flask-alchemy runtime

PanovSergey
офф. Я тут понял что нихрена не понимаю в сессии алхимии. Может кто подсксзать где читать. А то я сам найду.
В общем смысле это принцип factory, которым пронизана новая идеология flask вслед за Python 3, начиная с одного из способов устройства архитектуры приложения, заканчивая возможностью динамического подключения расширений.

ale
Но самое главное в том, что я использую flask-alchemy а не чистую алхимию, будут какие-то ньюансы? В смысле для алхимии все работает, а для фласка - нет.
По большому счету, flask-alchemy - это набор так называемых хэлперов для алхимии.
Т.е. теоретически все должно работать, вы уйдете вглубь предлагаемой flask-alchemy абстракции и будете использовать инструменты flask.ext.sqlalchemy.



Офлайн

  • Начало
  • » Web
  • » Изменение настроек flask-alchemy runtime[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version