tornado + motor 异步使用

本文介绍了在Python环境下使用Tornado和Motor进行异步操作的方法,包括环境版本、Motor简介、异步代码示例、可能出现的错误类型,以及在实际应用中遇到的问题和总结。重点展示了如何在Tornado中进行MongoDB的CRUD操作和处理异步请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tornado + motor 异步使用

1.python 环境以及版本

  • python 3.5
  • motor 2.0.0
  • tornado 5.1

2.motor简单介绍

  1. MongoDB 的异步python驱动
  2. 官网介绍依赖如下:

​ (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.

  1. 实际上motor是对pymongo的封装
  2. 需要注意的是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,
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值