高性能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 相关文章推荐
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
玩转python selenium鼠标键盘操作(ActionChains)
Apr 12 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
解决使用export_graphviz可视化树报错的问题
Aug 09 Python
python实现文件的分割与合并
Aug 29 Python
python 实现方阵的对角线遍历示例
Nov 29 Python
tensorflow 限制显存大小的实现
Feb 03 Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
零基础小白多久能学会python
Jun 22 Python
python实现PolynomialFeatures多项式的方法
Jan 06 Python
Python基础之进程详解
May 21 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利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
ThinkPHP模型详解
2015/07/27 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
div移动 输入框不能输入的问题
2009/11/19 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
flask-restful使用总结
2018/12/04 Python
python 实现倒排索引的方法
2018/12/25 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
python pillow库的基础使用教程
2021/01/13 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
委托书的写法
2014/08/30 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
网吧温馨提示
2015/07/17 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技