我正在阅读tornado documentation。我想在数据库中持久连接(在应用程序生命周期内连接),并从数据库异步返回数据。这样做最好的地方在哪里?
def initialize
?__init__
方法?def prepare
?你能提供一些例子吗?
答案 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访问数据库对象变得更加容易。