高性能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多线程下载文件的方法
Jul 10 Python
Python通过OpenCV的findContours获取轮廓并切割实例
Jan 05 Python
Django数据库表反向生成实例解析
Feb 06 Python
Python IDLE清空窗口的实例
Jun 25 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
python dlib人脸识别代码实例
Apr 04 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
python实现查找所有程序的安装信息
Feb 18 Python
python实现自动清理重复文件
Aug 24 Python
python 绘制国旗的示例
Sep 27 Python
Pytorch 如何实现LSTM时间序列预测
May 17 Python
python实现简单的井字棋
May 26 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中Ctype函数用法详解
2014/12/09 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
javascript定义函数的方法
2010/12/06 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
深入浅析Python的类
2018/06/22 Python
python高阶爬虫实战分析
2018/07/29 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
Django  ORM 练习题及答案
2019/07/19 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
python解包概念及实例
2021/02/17 Python
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
公司前台辞职报告
2014/01/19 职场文书
酒店销售经理岗位职责
2014/01/31 职场文书
运动会入场词60字
2014/02/15 职场文书
运动会稿件100字
2014/02/21 职场文书
师德师风演讲稿
2014/05/05 职场文书
比赛口号大全
2014/06/10 职场文书
大学生创业计划书
2014/08/14 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL