高性能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基于queue和threading实现多线程下载实例
Oct 08 Python
python网络编程之数据传输UDP实例分析
May 20 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
May 25 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
python将时分秒转换成秒的实例
Dec 07 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
用Python爬取某乎手机APP数据
Jun 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
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
PHP中header用法小结
2016/05/23 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
2016/07/13 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
Python实现进程同步和通信的方法
2018/01/02 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
空气的环保标语
2014/06/12 职场文书
土建技术员岗位职责
2015/04/11 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
2015年十月一日放假通知
2015/08/18 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python