欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

高性能龙卷风框架的简单实现、restful 接口和运维开发示例

最编程 2024-04-27 07:56:51
...

Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。


有个朋友让我搞搞tornado框架,说实话,这个框架我用的不多。。。


请大家多关注下,我的原文博客,地址是 blog.xiaorui.cc


我就把自己的一些个运维研发相关的例子,分享给大家。



怎么安装tornado,我想大家都懂。

1
pip install tornado


再来说说他的一些个模块,官网有介绍的。我这里再啰嗦的复读机一下,里面掺夹我的理解。


主要模块

web - FriendFeed 使用的基础 Web 框架,包含了 Tornado 的大多数重要的功能,反正你进入就对了。

escape - XHTML, JSON, URL 的编码/解码方法

database - 对 MySQLdb 的简单封装,使其更容易使用,是个orm的东西。

template - 基于 Python 的 web 模板系统,类似jinja2

httpclient - 非阻塞式 HTTP 客户端,它被设计用来和 web 及 httpserver 协同工作,这个类似加个urllib2

auth - 第三方认证的实现(包括 Google OpenID/OAuth、Facebook Platform、Yahoo BBAuth、FriendFeed OpenID/OAuth、Twitter OAuth)

locale - 针对本地化和翻译的支持

options - 命令行和配置文件解析工具,针对服务器环境做了优化,接受参数的


底层模块

httpserver - 服务于 web 模块的一个非常简单的 HTTP 服务器的实现

iostream - 对非阻塞式的 socket 的简单封装,以方便常用读写操作

ioloop - 核心的 I/O 循环


再来说说tornado接受请求的方式:

关于get的方式

1
2
3
4
5
6
7
8
9
10
class  MainHandler(tornado.web.RequestHandler):
     def  get (self):
         self.write( "You requested the main page" )
class  niubi(tornado.web.RequestHandler):
     def  get (self, story_id):
         self.write( "xiaorui.cc  niubi'id is  "  + story_id)
application = tornado.web.Application([
     (r "/" , MainHandler),
     (r "/niubi/([0-9]+)" , niubi),
])


这样我们访问 /niubi/123123123 就会走niubi这个类,里面的get参数。

关于post的方式

1
2
3
4
5
6
7
8
9
class  MainHandler(tornado.web.RequestHandler):
     def  get (self):
         self.write( '<html><body><form action="/" method="post">'
                    '<input type="text" name="message">'
                    '<input type="submit" value="Submit">'
                    '</form></body></html>' )
     def post(self):
         self.set_header( "Content-Type" "text/plain" )
         self.write( "xiaorui.cc and "  + self.get_argument( "message" ))


在tornado里面,一般get和post都在一个访问路由里面的,只是按照不同method来区分相应的。

扯淡的完了,大家测试下get和post。