专否 写文章

林公

Feb 28, 2023
Follow

Tornado使用motor异步连接mongodb

Tornado使用motor异步连接mongodb:

import os
import tornado.ioloop
from tornado import gen
import tornado.web
import motor
 
 
class Index(tornado.web.RequestHandler):
    @gen.coroutine
    def get(self):
        res = yield self.application.db.coll.find_one() # 异步连接主要看这句
        self.write( str(res) )
 
class Application(tornado.web.Application):
    def __init__(self):
        handlers = ([
            ("/index", Index),
        ])
        settings = dict(
            template_path=os.path.join(os.path.dirname(__file__), "templates"),
            static_path=os.path.join(os.path.dirname(__file__), "static"),
            cookie_secret='zhuanfou.com_lin_gong',
            debug=False,
        )
        super(Application, self).__init__(handlers, **settings)
        conn = motor.motor_tornado.MotorClient("127.0.0.1", 27017)  # mongodb服务的地址和端口
        self.db = conn.testdb  # 比如连接testdb
 
 
if __name__ == "__main__":
    app = Application()
    app.listen(80)
    tornado.ioloop.IOLoop.current().start()

其实,用一种白话文的思路来说,其实类似mongodb、elasticsearch等这些数据库,它们本身就有提供rest api这种形式的访问接口,所以,可以把各种数据库连接器想象成帮助你把你的数据库操作转化成符合rest api的各种url,然后异步访问能力,还是来源于tornado等异步服务器自身。

喜欢这个文章 | 分享 | 新建跟帖