2016-08-31 2 views
2

Я читаю tornado documentation. Я хотел бы иметь постоянное соединение (соединение в течение жизни приложения) с БД и возвращать данные из БД асинхронно. Где лучшее место для этого?Python: Tornado и постоянная связь с базой данных

  • def initialize?
  • обработчик __init__ способ?
  • def prepare?
  • или другое место?

Не могли бы вы привести несколько примеров?

+0

Хороший вопрос. Очень мало практических примеров в документации. –

ответ

2

Проще всего просто сделать объект подключения к базе данных глобальной переменной уровня модуля. Смотрите этот пример from the Motor documentation:

db = motor.motor_tornado.MotorClient().test_database 

application = tornado.web.Application([ 
    (r'/', MainHandler) 
], db=db) 

application.listen(8888) 
tornado.ioloop.IOLoop.instance().start() 

RequestHandlers могли бы просто использовать глобальную переменную непосредственно. Кроме того, передавая базу данных в качестве аргумента дб ключевых слов для применения делает его доступным для запроса обработчиков в их «настройке» Словарь:

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     db = self.settings['db'] 

Это может сделать его проще для доступа к объекту базы данных из RequestHandlers, определенный в других файлах.

 Смежные вопросы

  • Нет связанных вопросов^_^