tornado异步

tornado.httpclient.AsyncHTTPClient: tornad提供的异步web请求客户端,用来进行异步web请求

fetch(request,callback=None):用于执行一个web请求,并异步响应返回一个tornado.httpclient.HTTPResponse

        request 可以是一个url,也可以是一个tornado.httpclient.HTTPRequest

HTTPRequest:HTTP请求类,该类的构造函数可以接收参数

        url: 要访问的网址,字符串类型

        method: HTTP请求方式, 字符串类型

        headers: 附加的协议头,字典或者HTTPHeaders

        body: HTTP请求体

HTTPResponse:HTTP响应类

        code:  状态码

        reason: 状态码描述

        body: 响应数据

        error: 异常

tornado异步请求(连接数据库等耗时操作):第一种协程方法1

装饰器:@tornado.gen.coroutine:协程异步请求装饰器

              @tornado.web.asynchronous:异步请求装饰器

class Students3Handler(RequestHandler):
    @tornado.gen.coroutine
    def get(self, *args, **kwargs):
        res = yield self.getData()
        self.redirect(res["ret"])
    @tornado.gen.coroutine
    def getData(self):
        url = "http://www.baidu.com"
        client = AsyncHTTPClient()
        res = yield client.fetch(url)
        if res.error:
            ret = {"ret": 0}
        else:
            ret = {"ret":url}

        raise tornado.gen.Return(ret)

第一种协程方法2

@tornado.gen.coroutine
def get(self, *args, **kwargs):
    url = r"http://www.baidu.com"
    client = AsyncHTTPClient()
    res = yield client.fetch(url)
    if res.error:
        self.send_error(500)
    else:
        self.redirect(url)

第二种回调函数:

class StudentsHandler(RequestHandler):
    def on_response(self,response):
        if response.error:
            self.send_error(500)
        else:
            self.render("www.baidu.com")
    @tornado.web.asynchronous
    def get(self, *args, **kwargs):
        client = AsyncHTTPClient()
        url = r"www.baidu.com"
        client.fetch(url,callback=self.on_response)
        self.write("ok")



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值