tornado入门

tornado是用Python编写的一个强大的、可扩展的Web服务器和异步网络库

Tornado 和现在的主流 Web 服务器框架,明显的优势在于:它是非阻塞式服务器,而且速度相当快(如果配置正确,它可以处理10,000多个并发连接)

推荐入门书籍:

http://demo.pythoner.com/itt2zh/index.html

https://www.cnblogs.com/yezigege/p/13447319.html
这本书中包含了tornado的安装、搭建、以及基础操作,适合初学着

1. 同步

会有阻塞的困扰,请求量大的时候,发送请求到获得返回的搜索数据之间有相当大的滞后,这意味着同时只能提供一个请求。

例如:

Tornado的httpclient模块:我们将使用这个模块的HTTPClient类来执行HTTP请求

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        query = self.get_argument('q')
        client = tornado.httpclient.HTTPClient()
        response = client.fetch(url + urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100}))
        body = json.loads(response.body)
        ...

这个例子里我们实例化了一个Tornado的HTTPClient类,然后调用结果对象的fetch方法。fetch方法的同步版本使用要获取的URL作为参数。

2. 异步

基础异步调用:Tornado包含一个AsyncHTTPClient类,可以执行异步HTTP请求。
 

class IndexHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    def get(self):
        query = self.get_argument('q')
        client = tornado.httpclient.AsyncHTTPClient()
        client.fetch(url + urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100}),
                callback=self.on_response)

AsyncHTTPClient的fetch方法并不返回调用的结果。取而代之的是它指定了一个callback参数;你指定的方法或函数将在HTTP请求完成时被调用,并使用HTTPResponse作为其参数。
需要注意的是@tornado.web.asynchronous装饰器的使用(在get方法的定义之前)以及在回调方法结尾处调用的self.finish()。使用@tornado.web.asynchonous装饰器时,Tornado永远不会自己关闭连接。你必须在你的RequestHandler对象中调用finish方法来显式地告诉Tornado关闭连接。(否则,请求将可能挂起,浏览器可能不会显示我们已经发送给客户端的数据。)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值