高性能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函数装饰器用法实例详解
Jun 04 Python
对numpy中array和asarray的区别详解
Apr 17 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
python实现textrank关键词提取
Jun 22 Python
浅谈flask源码之请求过程
Jul 26 Python
选择python进行数据分析的理由和优势
Jun 25 Python
python 有效的括号的实现代码示例
Nov 11 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 Python
Python必备技巧之字符数据操作详解
Mar 23 Python
python 镜像环境搭建总结
Sep 23 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的FTP学习(二)[转自奥索]
2006/10/09 PHP
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
php curl_init函数用法
2014/01/31 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
js文件缓存之版本管理详解
2013/07/05 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
Jquery $when done then的用法详解
2016/05/20 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
vue中的scope使用详解
2017/10/29 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
python插入数据到列表的方法
2015/04/30 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
Python AES加密实例解析
2018/01/18 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
个人合伙协议书范本
2014/10/14 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
紧急通知
2015/04/17 职场文书
学前教育见习总结
2015/06/23 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL
python基础之类方法和静态方法
2021/10/24 Python
Python加密与解密模块hashlib与hmac
2022/06/05 Python