像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)
有几处改动需要说明
本文只是简单的展示如何在tornado框架里使用motor, 示例中,do_find 不能有参数,这无关紧要, 因为run_sync 是以阻塞的方式运行协程,本例只是展示在tornado中与asyncio中使用motor的不同,真实的tornado项目里,不会这样操作,否则就等于没有使用tornado异步特性。
QQ交流群: 211426309