高性能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实现音乐下载器
Apr 15 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
django框架防止XSS注入的方法分析
Jun 21 Python
python中图像通道分离与合并实例
Jan 17 Python
Python中包的用法及安装
Feb 11 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 Python
Python音乐爬虫完美绕过反爬
Aug 30 Python
python manim实现排序算法动画示例
Aug 14 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
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
PHP IPV6正则表达式验证代码
2010/02/16 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
原生js生成图片验证码
2020/10/11 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
Python 基础教程之包和类的用法
2017/02/23 Python
python机器学习之神经网络(二)
2017/12/20 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
Python的几种主动结束程序方式
2019/11/22 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
几道数据库的概念性面试题
2014/05/30 面试题
体育专业学生自我评价范文
2014/01/17 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
政府采购方案
2014/06/12 职场文书
中学生运动会新闻稿
2014/09/24 职场文书