Всем известно,
что веб-приложение может отрабатывать
сотни запросов в секунду. Известно,
также, что приличное веб-приложение
обращается к базе данных при ответах
на запрос. Очевидно, что для такого
веб-приложения было бы разумно установить
соединение с БД один раз, при запуске,
к примеру, и пользоваться этим коннектом
во всех запросах.
Однако,
архитекторы Flask так не думают. Упирая
на многопоточность веб-приложения как
на ключевую характеристику Flask, они
предлагают нам открывать соединение с
БД при входе в «контекст» приложения.
При этом, к тому же, происходит подмена
понятий. Во Flask контекст приложения, не
смотря на название, создается для
отработки текущего запроса, после чего
уничтожается. Соответственно,
открытие/закрытие коннекта к БД
происходит, возможно, сотни раз в секунду.
Дикость. Недовольным рекомендуют
обращаться к расширению Flask-SqlAlchemy,
которое поддерживает пулы соединений
с БД.
Я не хочу в
своем микроприложении использовать
макрофреймворк типа SQLAlchemy. Но и
открывать/закрывать коннекты к БД на
каждый чих мне религия не позволяет.
Поэтому я почитал код Flask-sqlalchemy и выдрал
оттуда механизм хранения.
Получился
Flask extension или плагин, называйте как хотите
Позволяет
сохранять данные, коннект к БД, например,
на протяжении жизни всего приложения,
суть головного процесса.
Вполне возможно
я что-то упустил. Но на текущий момент
практика показывает, что модуль работает
нормально. Разве что не надо забывать,
что хранить в таком хранилище стоит
только thread-safe данные.
Что почитать
по теме
Комментариев нет:
Отправить комментарий