高性能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 26 Python
用python读写excel的方法
Nov 18 Python
Python中类的定义、继承及使用对象实例详解
Apr 30 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
python中pika模块问题的深入探究
Oct 13 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
python3 webp转gif格式的实现示例
Dec 10 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
Python调用.net动态库实现过程解析
Jun 05 Python
教你如何使用Python下载B站视频的详细教程
Apr 29 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+mysqli数据库连接的两种方式
2015/01/28 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
React实现阿里云OSS上传文件的示例
2020/08/10 Javascript
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
怎样有效的进行自我评价
2013/10/06 职场文书
毕业设计计划书
2014/01/09 职场文书
优秀语文教师事迹
2014/05/18 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
预备党员转正意见
2015/06/01 职场文书
离婚民事起诉状
2015/08/03 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
初中思想品德教学反思
2016/02/24 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python