Python:Tornado和持久数据库连接

时间:2016-08-31 11:22:20

标签: python database asynchronous tornado

我正在阅读tornado documentation。我想在数据库中持久连接(在应用程序生命周期内连接),并从数据库异步返回数据。这样做最好的地方在哪里?

  • def initialize
  • 处理程序的__init__方法?
  • def prepare
  • 或其他地方?

你能提供一些例子吗?

1 个答案:

答案 0 :(得分:4)

最简单的方法是使数据库连接对象成为模块级全局变量。请参阅此示例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可以直接使用全局变量。此外,将数据库作为db关键字参数传递给Application使其可用于在其"设置中请求处理程序"字典:

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

这可以使从其他文件中定义的RequestHandler访问数据库对象变得更加容易。