高性能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 30 Python
在Python中处理字符串之isdigit()方法的使用
May 18 Python
python根据unicode判断语言类型实例代码
Jan 17 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
python设定并获取socket超时时间的方法
Jan 12 Python
python实现自动解数独小程序
Jan 21 Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 Python
python颜色随机生成器的实例代码
Jan 10 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
Mar 17 Python
Django 实现对已存在的model进行更改
Mar 28 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
Nov 28 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 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 array_map()数组函数使用说明
2011/07/12 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
Android笔试题总结
2014/11/29 面试题
技术人员面试提纲
2013/11/28 职场文书
数学教学随笔感言
2014/02/17 职场文书
高三家长寄语
2014/04/03 职场文书
学雷锋月活动总结
2014/04/25 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
金陵十三钗观后感
2015/06/04 职场文书
高三语文教学反思
2016/02/16 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
Python语言内置数据类型
2022/02/24 Python
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫