高性能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-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
python中不能连接超时的问题及解决方法
Jun 10 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
Feb 01 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
python实现大量图片重命名
Mar 23 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
May 22 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
django 实现后台从富文本提取纯文本
Jul 02 Python
python中pop()函数的语法与实例
Dec 01 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 Python
Django如何创作一个简单的最小程序
May 12 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魔术变量用法实例详解
2014/11/13 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
kali中python版本的切换方法
2019/07/11 Python
Django的Modelforms用法简介
2019/07/27 Python
详解如何修改python中字典的键和值
2020/09/29 Python
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
广州盈通面试题
2015/12/05 面试题
桥梁工程专业求职信
2014/04/21 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android
图文详解nginx日志切割的实现
2022/01/18 Servers