tornado + motor 异步使用
1.python 环境以及版本
- python 3.5
- motor 2.0.0
- tornado 5.1
2.motor简单介绍
- MongoDB 的异步python驱动
- 官网介绍依赖如下:
(1) Unix, including Mac OS X. Windows is not supported.
(2) PyMongo 3.6 or later.
(3) Python 2.7 or later
(4) futures on Python 2.7.
(5) backports.pbkdf2 for faster authentication with MongoDB 3.0+, especially on Python older than 2.7.8, or on Python 3 before Python 3.4.
- 实际上motor是对pymongo的封装
- 需要注意的是motor各版本之间使用方式的改动,可参考Changelog
3.代码示例
-
中转接口示例
-
假如API中需要调用别的接口,并且获取请求结果,可参考如下代码,此处省去路由列表,仅仅列出处理的类。
-
下面需要发送一个json数据类型的post请求。
class Transfer(tornado.web.RequestHandler): # 调用某api @tornado.gen.coroutine def post(self): text = self.request.body_argument['text'] #check_param(['text'], body) #自己的检测函数 #post需要传入的body,json数据 body = { "key": { "key1": "theft", "key2": text}} post_body = json.dumps(body, ensure_ascii=False) url = 'http://*****/****'#此处替换自己想要调用的API headers = { 'Content-Type': 'application/json'} http_client = tornado.httpclient.AsyncHTTPClient() #构造一个post请求 resp = yield tornado.gen.Task( http_client.fetch, url, headers = headers, method="POST", body=post_body,
-