2016-08-31 16 views
2

私はtornado documentationを読んでいます。私は永続的な接続(アプリケーションライフタイム中に接続が確立されている)をDBに持ち、DBから非同期にデータを返したいと思います。これを行うのに最適な場所はどこですか?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は、単に直接グローバル変数を使用することができます。また、アプリケーションにDBのキーワード引数としてデータベースを渡すと、それが可能な彼らの「設定」のdictにハンドラを要求することができます:

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

これは、それが簡単に他のファイルで定義されてRequestHandlersからデータベースオブジェクトにアクセスするにはなるかもしれません。

関連する問題