高性能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常用模块介绍
Nov 21 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
python将一组数分成每3个一组的实例
Nov 14 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
使用Python+wxpy 找出微信里把你删除的好友实例
Feb 21 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
使用Python实现分别输出每个数组
Dec 06 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
Django如何与Ajax交互
Apr 29 Python
pandas提升计算效率的一些方法汇总
May 30 Python
全网非常详细的pytest配置文件
Jul 15 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
第十一节 重载 [11]
2006/10/09 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
Jquery知识点三 jquery表单对象操作
2011/01/17 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
JavaScript基本类型值-Number类型
2017/02/24 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
浅析Vue中method与computed的区别
2018/03/06 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
Python模拟登录验证码(代码简单)
2016/02/06 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
pandas如何处理缺失值
2019/07/31 Python
Python descriptor(描述符)的实现
2020/11/15 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
python 通过exifread读取照片信息
2020/12/24 Python
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
应用艺术专业个人的自我评价
2014/01/03 职场文书
大学军训感言
2014/01/10 职场文书
高二生物教学反思
2014/01/27 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
责任书范本
2014/08/25 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书