В SQLAlchemy при использовании NullPool нужно ли создавать экземпляр объекта Engine только один раз? - PullRequest
2 голосов
/ 26 мая 2020

В документах SQLAlchemy они упоминают, что вы должны создать экземпляр объекта Engine (вызывая create_engine) только один раз (для каждого URL-адреса БД) за время существования вашего приложения, поскольку «Engine наиболее эффективен. при создании только один раз на уровне модуля приложения ".

Мой вопрос: если я создаю механизм, отключающий пул (используя NullPool), есть ли преимущества от его создания только один раз за время жизни приложения ? Причина, по которой я использую NullPool, заключается в том, что у нас были некоторые проблемы, связанные с многопроцессорной обработкой, и это было одной из вещей, предложенных в SQLAlchemy docs для решения этой проблемы.

Насколько я понимаю, не используя пул, мы не сохраняем соединения с БД открытыми после их использования, поэтому каковы будут потенциальные недостатки вызова create_engine для каждого выполняемого запроса?

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

...