高性能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类的多重继承问题深入分析
Nov 09 Python
Python实现冒泡排序的简单应用示例
Dec 11 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
解决python3 json数据包含中文的读写问题
May 10 Python
Windows下将Python文件打包成.EXE可执行文件的方法
Aug 03 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
Mar 05 Python
详解python持久化文件读写
Apr 06 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
Django REST 异常处理详解
Jul 15 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 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下实现农历日历的代码
2007/03/07 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
详解Python自建logging模块
2018/01/29 Python
详解python中asyncio模块
2018/03/03 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
django和flask哪个值得研究学习
2020/07/31 Python
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
实习自荐信
2013/10/13 职场文书
校园广播稿100字
2014/10/06 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
工人先锋号申报材料
2014/12/29 职场文书
2015年招生工作总结
2015/05/04 职场文书
钱学森电影观后感
2015/06/04 职场文书
父母教会我观后感
2015/06/17 职场文书
小学见习报告
2015/06/23 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
Python中request的基本使用解决乱码问题
2022/04/12 Python