Python:龙卷风和持久数据库连接

Rud*_*koŭ 4 python database asynchronous tornado

我正在阅读龙卷风文档。我想与数据库建立持久连接(在应用程序生命周期内建立连接),并从数据库异步返回数据。最好的地方在哪里?

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

你能提供一些例子吗?

A. *_*vis 5

最简单的事情就是使数据库连接对象成为模块级别的全局变量。请参阅电机文档中的以下示例:

db = motor.motor_tornado.MotorClient().test_database

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

application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)

RequestHandlers可以直接使用全局变量。另外,将数据库作为db关键字参数传递给Application使其可以在其“设置”字典中请求处理程序:

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        db = self.settings['db']
Run Code Online (Sandbox Code Playgroud)

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