高性能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实现全角半角转换的方法
Aug 18 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
Python 记录日志的灵活性和可配置性介绍
Feb 27 Python
点球小游戏python脚本
May 22 Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 Python
python实现事件驱动
Nov 21 Python
python把1变成01的步骤总结
Feb 27 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
python写程序统计词频的方法
Jul 29 Python
python实现连续变量最优分箱详解--CART算法
Nov 22 Python
如何安装并在pycharm使用selenium的方法
Apr 30 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
js确定对象类型方法
2012/03/30 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
JS FormData对象使用方法实例详解
2020/02/12 Javascript
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
pyside写ui界面入门示例
2014/01/22 Python
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
python对excel文档去重及求和的实例
2018/04/18 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
opencv python图像梯度实例详解
2020/02/04 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
经销商会议欢迎词
2014/01/11 职场文书
庆元旦广播稿
2014/02/10 职场文书
总经理助理的职责
2014/03/14 职场文书
出售房屋协议书范本
2014/10/06 职场文书
端午节活动总结报告
2015/02/11 职场文书
南极大冒险观后感
2015/06/05 职场文书