高性能web服务器框架Tornado简单实现restful接口及开发实例

有个朋友让我搞搞tornado框架,说实话,这个框架我用的不多。。。

我就把自己的一些个运维研发相关的例子,分享给大家。

怎么安装tornado,我想大家都懂。

pip install tornado

再来说说他的一些个模块,官网有介绍的。我这里再啰嗦的复读机一下,里面掺夹我的理解。

主要模块
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测试

(0)

相关推荐

  • jQuery调用RESTful WCF示例代码(GET方法/POST方法)

    不废话了,直奔主题吧 wcf端: 近几年比较流行restful,为了能让ajax调用,同时也为了支持restful风格的uri,在创建一个Ajax-enabled Wcf Service后,必须手动修改svc文件,指定Factory,即: <%@ ServiceHost Language="C#" Debug="true" Service="ajaxSample.HelloWorld" CodeBehind="HelloWorld

  • python模块restful使用方法实例

    RESTful架构,目前是比较流行的一种互联网软件架构.REST,即Representational State Transfer的缩写. 说白点就是网站即软件,再白点就是一个服务软件支持http的四种方法: GET用来获取资源,POST用来新建资源.更新资源,PUT用来更新资源,DELETE用来删除资源. 并对外提供一个或多个URI,每个URI对应一个资源:客户端通过URI配合上面的方法就可以和服务 段的软件交互.客户端主要是浏览器,使用restful框架的软件对http的支持也为了web应用

  • Restful传递数组参数及注解大全

    RESTful 一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 需要传递数组参数的情况,如果是一般的form表单,可以直接定义参数类型为List<String>即可(不能定义为数组类型,否则只能得到一个null). 示例代码如下: @POST @Path("/user" ) public Response createUser(@FormPara

  • php基于curl扩展制作跨平台的restfule 接口

    restfule 接口 适用的平台:跨平台 所依赖:curl扩展 git:https://git.oschina.net/anziguoer/restAPI ApiServer.php <?php /** * @Author: yangyulong * @Email : anziguoer@sina.com * @Date: 2015-04-30 05:38:34 * @Last Modified by: yangyulong * @Last Modified time: 2015-04-30

  • php处理restful请求的路由类分享

    复制代码 代码如下: <?php    class Router {        // 路由表        private $routers = array(            array("name"=>"userlist", "pattern"=>"get /user", "action"=>"User#get"),            array(

  • PHP实现自动识别Restful API的返回内容类型

    如题,PHP如何自动识别第三方Restful API的内容,自动渲染成 json.xml.html.serialize.csv.php等数据? 其实这也不难,因为Rest API也是基于http协议的,只要我们按照协议走,就能做到自动化识别 API 的内容,方法如下: 1.API服务端要返回明确的 http Content-Type头信息,如: Content-Type: application/json; charset=utf-8 Content-Type: application/xml;

  • 高性能web服务器框架Tornado简单实现restful接口及开发实例

    有个朋友让我搞搞tornado框架,说实话,这个框架我用的不多... 我就把自己的一些个运维研发相关的例子,分享给大家. 怎么安装tornado,我想大家都懂. pip install tornado 再来说说他的一些个模块,官网有介绍的.我这里再啰嗦的复读机一下,里面掺夹我的理解. 主要模块 web - FriendFeed 使用的基础 Web 框架,包含了 Tornado 的大多数重要的功能,反正你进入就对了. escape - XHTML, JSON, URL 的编码/解码方法 datab

  • Web服务器框架 Tornado简介

    Tornado 跟其他主流的Web服务器框架(主要是Python框架)不同是采用epoll非阻塞IO,响应快速,可处理数千并发连接,特别适用用于实时的Web服务. 高性能web服务器框架Tornado简单实现restful接口及开发实例 http://www.jb51.net/article/52209.htm 要使用它,必须按照以下套件: 1)Python(建议使用Python 2.5 / Python 2.6) 2)Simplejson(建议使用simplejson 2.0.9) 3)cUR

  • python web自制框架之接受url传递过来的参数实例

    我们知道,在django里有个request,可以接收表单等前端传过来的数据,现在我们也做一个类似的功能. 首先我们定义一个类class,然后初始化数据与定义保存参数的方法,如下: class Request(object): def __init__(self): self.method = 'GET' self.path = '' self.query = {} self.body = '' def form(self): body = urllib.parse.unquote(self.b

  • Linux+Nginx+Php架设高性能WEB服务器

    Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 . Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了.Igor 将源代码以类BSD许可证的形式发布.尽管还是测试版,但是,Nginx 已经因为它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名了. 本文是W3CGROUP在成功架设Nginx+Php Web服务

  • Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服务器

    之前一直使用Nginx+Fastcgi来搭建python web服务器,本文介绍Nginx+UWSGI组合来实现.uWSGI 是一个快速的.纯C语言开发的.自维护的.对开发者友好的WSGI服务器,旨在提供专业的 Python web应用发布和开发.它更符合python web的标准协议,速度要比Fastcgi要快.性能更加稳定. 一.安装平台 1.安装pcre 复制代码 代码如下: cd /home mkdir -p /home/install/nginx && cd /home/inst

  • Tornado Web服务器多进程启动的2个方法

    一.Tornado简介 Tornado 是 FriendFeed 的 Web 服务器及其常用工具的开源版本.Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快.得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个理想框架. 二.多进程启动方法 正常启动方法: 复制代码 代码如下: server = HTTPServer(app)

  • Node.js实战 建立简单的Web服务器

    前面一章,我们介绍了Node.js这个面向互联网服务的JavaScript服务器平台,同时Node.js的运行环境已经搭建起来,并通过两段HelloWorld程序验证了Node.js的基本功能.本章我们同样通过实战的演练,利用Node.js建立一个简单的Web服务器. 如果你熟悉.NET或其他类似平台的Web开发,你可能会像,建立一个Web服务器有什么,在Visual Studio中建立一个Web工程,点击运行即可.事实的确是这样,但请不要忘记,这样的代价是,比如果说,你是用.NET开发Web应

  • WEB服务器大比拼,评析六大流派

    摘要 有时候Apache给人的感觉是无处不在,每个人都在运行Apache,甚至包括它们的狗也运行有自己的Apache .但是即使如此,仍然有很多种其他的Web服务器可供选择.本文就对目前市场上主流Web服务器进行全面的比较. Apache无处不在,可以运行在包括Linux.Soloris等多种系统平台之上.Apache在网络市场是无可争议的领头羊.几乎在任何一本关于网络管理的教程中关于Web服务器内容讨论的都是Apache.当然选择Apache是由很多非常充足的原因的,毕竟一千六百万用户(根据N

  • 详细解读Python的web.py框架下的application.py模块

    本文主要分析的是web.py库的application.py这个模块中的代码.总的来说,这个模块主要实现了WSGI兼容的接口,以便应用程序能够被WSGI应用服务器调用.WSGI是Web Server Gateway Interface的缩写,具体细节可以查看WSGI的WIKI页面 接口的使用 使用web.py自带的HTTP Server 下面这个例子来自官方文档的Hello World,这个代码一般是应用入口的代码: import web urls = ("/.*", "he

  • Node.js原生api搭建web服务器的方法步骤

    node.js 实现一个简单的 web 服务器还是比较简单的,以前利用 express 框架实现过『nodeJS搭一个简单的(代理)web服务器』.代码量很少,可是使用时需要安装依赖,多处使用难免有点不方便.于是便有了完全使用原生 api 来重写的想法,也当作一次 node.js 复习. 1.静态 web 服务器 'use strict' const http = require('http') const url = require('url') const fs = require('fs'

随机推荐