高性能web服务器框架Tornado简单实现restful接口及开发实例


Posted in Python onJuly 16, 2014

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

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

高性能web服务器框架Tornado简单实现restful接口及开发实例

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

pip install tornado

再来说说他的一些个模块,官网有介绍的。我这里再??碌母炊粱?幌拢?锩娌艏形业睦斫狻?/p>

主要模块
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的方式

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的方式

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。

import tornado.ioloop 
import tornado.web 
import json 
class hello(tornado.web.RequestHandler): 
  def get(self): 
    self.write('Hello,xiaorui.cc') 
class add(tornado.web.RequestHandler): 
  def post(self): 
    res = Add(json.loads(self.request.body)) 
    self.write(json.dumps(res)) 
def Add(input): 
  sum = input['num1'] + input['num2'] 
  result = {} 
  result['sum'] = sum 
  return result 
application = tornado.web.Application([ 
  (r"/", hello), 
  (r"/add", add), 
]) 
if __name__ == "__main__": 
  application.listen(8888) 
  tornado.ioloop.IOLoop.instance().start()

#大家可以写个form测试,也可以用curl -d测试

Python 相关文章推荐
Python中for循环详解
Jan 17 Python
Python正则表达式的使用范例详解
Aug 08 Python
python实现从字典中删除元素的方法
May 04 Python
解析Python中的__getitem__专有方法
Jun 27 Python
1 行 Python 代码快速实现 FTP 服务器
Jan 25 Python
python pyinstaller 加载ui路径方法
Jun 10 Python
Python实现某论坛自动签到功能
Aug 20 Python
PyTorch中permute的用法详解
Dec 30 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
python3.6使用SMTP协议发送邮件
May 20 Python
Django实现文章详情页面跳转代码实例
Sep 16 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 Python
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 #Python
python django集成cas验证系统
Jul 14 #Python
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 #Python
用python + openpyxl处理excel2007文档思路以及心得
Jul 14 #Python
Python库urllib与urllib2主要区别分析
Jul 13 #Python
Python文件夹与文件的操作实现代码
Jul 13 #Python
分享15个最受欢迎的Python开源框架
Jul 13 #Python
You might like
PHP+DBM的同学录程序(4)
2006/10/09 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
dedecms中使用php语句指南
2014/11/13 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
Prototype使用指南之ajax
2007/01/10 Javascript
JavaScript效率调优经验
2009/06/04 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
js清除浏览器缓存的几种方法
2017/03/15 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
Python内置异常类型全面汇总
2020/05/28 Python
详解python logging日志传输
2020/07/01 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
英国名牌男装店:Standout
2021/02/17 全球购物
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
大学同学聚会邀请函
2014/01/19 职场文书
CAD制图设计师自荐信
2014/01/29 职场文书
企业承诺书怎么写
2014/05/24 职场文书
学校社会实践活动总结
2014/07/03 职场文书
2015团员个人年度总结
2015/11/24 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang