@Nodar
Python, Ruby, JavaScript

Как и куда правильно передавать соедние к базе данных в Tornado?

Всем привет.
Хотел бы проконсультироваться по поводу правильного подключения к базе данных.
Я использую фреймворк Tornado, база - MongoDB.
Струкрура моего приложения:

- server.py / Создание Application, пуск сервера
- handlers / Контроллеры
----main.py
----users.py
- models / Модели
---- users.py
---- stats.py
---- db.py
Раньше, я открывал коннект в db.py и импортировал его во все модели.
Но недавно, более опытный коллега сказал, что лучше создавать и передавать коннект в класс Application, тоесть 1 коннект на все приложение?

Подскажите, верная ли это тактика?
  • Вопрос задан
  • 2532 просмотра
Пригласить эксперта
Ответы на вопрос 2
В книге Introduction to Tornado есть раздел посвященный работе именно с MongoDB.

Там подключение сделано таким образом:

class Application(tornado.web.Application): 
   def __init__(self):
      handlers = [(r"/(\w+)", WordHandler)]
      conn = pymongo.Connection("localhost", 27017)
      self.db = conn["example"] tornado.web.Application.__init__(self, handlers, debug=True)


правда там в примерах все приложение в один main.py помещается.
Ответ написан
Комментировать
Tark
@Tark
Pyramid'альный мир
По логике вещей, модуль импортируется один раз - несмотря на то, сколько раз он был импортирован внутри скриптов приложения. Иначе это было бы несколько страшновато: я сам создаю соединение с базой данных в одном скрипте и заодно там же быстренько забираю нужную информацию из БД.

Соединение с БД одно на весь воркер, инстанс приложения, если не сказано обратное (если вы не создаёте пул соединений внутри приложения). А если так, то какая разница, как это делать? В Торнадо принято так? Ну значит так и стоит сделать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы