motor结合tornado访问mongo数据库

1. 在tornado中使用motor

像motor这样的python异步库,由于只能在协程中运行使用,因此和asyncio仅仅绑定,此外,tornado 也可以运行协程,前面的例子,很容依旧能改成使用tornado运行的。

import pprint
import asyncio
import motor.motor_tornado
from tornado.ioloop import IOLoop


uri = "mongodb://kwsy:123456@localhost:27017/app"
client = motor.motor_tornado.MotorClient(uri)

db = client.app

async def do_find():
    cursor = db.user.find({})
    async for data in cursor:
        pprint.pprint(data)

IOLoop.current().run_sync(do_find)

有几处改动需要说明

  1. import motor.motor_tornado
  2. 创建客户端使用的是MotorClient
  3. 使用tornado 的run_sync 运行协程

本文只是简单的展示如何在tornado框架里使用motor, 示例中,do_find 不能有参数,这无关紧要, 因为run_sync 是以阻塞的方式运行协程,本例只是展示在tornado中与asyncio中使用motor的不同,真实的tornado项目里,不会这样操作,否则就等于没有使用tornado异步特性。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案