高性能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访问sqlserver示例
Feb 10 Python
Python使用代理抓取网站图片(多线程)
Mar 14 Python
python实现k均值算法示例(k均值聚类算法)
Mar 16 Python
Python实现二维有序数组查找的方法
Apr 27 Python
Python实现将数据库一键导出为Excel表格的实例
Dec 30 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
Python命名空间的本质和加载顺序
Dec 17 Python
Python3转换html到pdf的不同解决方案
Mar 11 Python
Python使用turtle库绘制小猪佩奇(实例代码)
Jan 16 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 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若干单维数组遍历方法的比较
2011/09/20 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
python交互界面的退出方法
2019/02/16 Python
使用python求解二次规划的问题
2020/02/29 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
进程的查看和调度分别使用什么命令
2013/12/14 面试题
大学生物业管理求职信
2013/10/24 职场文书
园林技术个人的自我评价
2014/01/08 职场文书
世博会口号
2014/06/20 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
新闻人物通讯稿
2014/10/09 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
与死神共舞观后感
2015/06/15 职场文书
运动会100米加油稿
2015/07/21 职场文书
获奖感言范文
2015/07/31 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技
Java 多态分析
2022/04/26 Java/Android
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS