Tornado框架

参考:http://sebug.net/paper/books/tornado/ 

从github中下载tornado代码,里面有blogdemo实例

Tornado 当中使用了 一种非阻塞式的 I/O 模型,所以可以改变这种默认的处理行为——让一个请求一直保持 连接状态,而不是马上返回,直到一个主处理行为返回。要实现这种处理方式,只需要 使用 tornado.web.asynchronous 装饰器就可以了。

使用了这个装饰器之后,你必须调用 self.finish() 已完成 HTTTP 请求,否则 用户的浏览器会一直处于等待服务器响应的状态:

class MainHandler(tornado.web.RequestHandler):

    @tornado.web.asynchronous

    def get(self):

        self.write("Hello, world")

        self.finish()

异步 HTTP 客户端

Tornado 包含了两种非阻塞式HTTP 客户端实现SimpleAsyncHTTPClient 和 CurlAsyncHTTPClient。前者是直接基于 IOLoop 实现的,因此无需外部依赖关系。 后者作为 Curl 客户端,需要安装 libcurl 和 pycurl 后才能正常工作,但是对于使用 到 HTTP 规范中一些不常用内容的站点来说,它的兼容性会更好。为防止碰到 旧版本中异步界面的 bug,我们建议你安装最近的版本的 libcurl 和 pycurl

实例:对于Tornado,使用的部署方案为前端使用 nginx 做反向代理,带动 个线程模式的 Tornado,这种方案也推荐在生产环境下的 Tornado 部署方案(根据具体的硬件情况,我们推荐一个 CPU 核对应一个 Tornado 伺服实例, 我们的负载测试使用的是四核处理器)。

Tornado 对 WSGI 只提供了有限的支持,即使如此,因为 WSGI 并不支持非阻塞式的请求,所以如果你使用 WSGI 代替 Tornado 自己的 HTTP 服务的话,那么你将无法使用 Tornado 的异步非阻塞式的请求处理方式。 比如 @tornado.web.asynchronoushttpclient 模块、auth 模块, 这些将都无法使用。

tornado 其它设计用来被复写的方法有:

get_error_html(self, status_code, exception=None, **kwargs) - 以字符串的形式 返回 HTML,以供错误页面使用。

get_current_user(self) - 用户认证

get_user_locale(self) - 返回 locale 对象,以供当前用户使用。

get_login_url(self) - 返回登录网址,以供 @authenticated 装饰器使用

get_template_path(self) - 返回模板文件的路径(默认是 Application 中的设置)

学习TornadoMVC思想:

https://github.com/the5fire/practice_demo 

此作者博客是the5fire, 特别好,非常推荐

http://www.the5fire.com/tornado-mvc-helloworld-2.html 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值