Tornado Web Server框架编写简易Python服务器

我们都知道在Web开发中,都需要服务器,比如Java Web开发的Tomcat,WebLogic,WebSphere,现在来看利用Tornado Web Server框架如何写一个简易的Python服务器。

一般来说只需要实现get和post方法就可以了。以上次使用redis数据库的例子说明,数据库插入代码如下:

import redis
import datetime

class Database:
  def __init__(self):
    self.host = 'localhost'
    self.port = 6379
    self.write_pool = {}

  def add_write(self,website,city,year,month,day,deal_number):
    key = '_'.join([website,city,str(year),str(month),str(day)])
    val = deal_number
    self.write_pool[key] = val

  def batch_write(self):
    try:
      r = redis.StrictRedis(host=self.host,port=self.port)
      r.mset(self.write_pool)
    except Exception, exception:
      print exception

def add_data():
  beg = datetime.datetime.now()
  db = Database()
  for i in range(1,10000):
    db.add_write('meituan','beijing',2013,i,1,i)
  db.batch_write()
  end = datetime.datetime.now()
  print end-beg

if __name__ == '__main__':
  add_data()

以上代码插入了数据,那么现在用我们的服务器来访问一些数据。

import json
import redis
import tornado.web
import tornado.httpserver
from tornado.options import define, options

define("port", default=8888, type=int)

class DealHandler(tornado.web.RequestHandler):
  def initialize(self):
    self.port = 6379
    self.host = "localhost"

  def get(self):
    website = self.get_argument("website",None)
    city  = self.get_argument("city",None)
    year  = self.get_argument("year",None)
    month  = self.get_argument("month",None)

    keyset = []
    for i in range(1,31):
      key = '_'.join([website,city,year,month,str(i)])
      keyset.append(key)

    r = redis.StrictRedis(host=self.host,port=self.port)
    self.write( json.dumps(r.mget(keyset)) )

class ExampleHandler(tornado.web.RequestHandler):
  def get(self):
    who = self.get_argument("who", None)
    if who:
      self.write("Hello, " + who)
    else:
      self.write("Hello World!")

  def post(self):
    who = self.get_argument("who", None)
    if who:
      self.write("Hello, " + who)
    else:
      self.write("Hello World!")

class Application(tornado.web.Application):
  def __init__(self):
    handlers = [
      (r"/", ExampleHandler),
      (r"/deal", DealHandler),
    ]
    settings = dict()
    tornado.web.Application.__init__(self, handlers, settings)

def create_server():
  tornado.options.parse_command_line()
  http_server = tornado.httpserver.HTTPServer(Application())
  http_server.listen(options.port)
  tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
  create_server()

以上代码实现了一个简单的服务器,用于处理http请求。

在浏览器中输入:

http://localhost:8888/deal?website=meituan&city=beijing&year=2013&month=9

即可得到需要的数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Tornado服务器中绑定域名、虚拟主机的方法

    Tornado默认是监听IP加端口形式,由于Tornado在国内用的人极少,资料更是鳞毛凤角.下面说说Tornado如何绑定域名. 默认Tornado的hello word是这么来的 复制代码 代码如下: import tornado.ioloop import tornado.web   class MainHandler(tornado.web.RequestHandler):     def get(self):         self.write("Hello, world"

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

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

  • Python Web服务器Tornado使用小结

    首先想说的是它的安全性,这方面确实能让我感受到它的良苦用心.这主要可以分为两点: 一.防范跨站伪造请求(Cross-site request forgery,简称 CSRF 或 XSRF) CSRF 的意思简单来说就是,攻击者伪造真实用户来发送请求. 举例来说,假设某个银行网站有这样的 URL:http://bank.example.com/withdraw?amount=1000000&for=Eve当这个银行网站的用户访问该 URL 时,就会给 Eve 这名用户一百万元.用户当然不会轻易地点

  • 高性能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

  • Tornado Web Server框架编写简易Python服务器

    我们都知道在Web开发中,都需要服务器,比如Java Web开发的Tomcat,WebLogic,WebSphere,现在来看利用Tornado Web Server框架如何写一个简易的Python服务器. 一般来说只需要实现get和post方法就可以了.以上次使用redis数据库的例子说明,数据库插入代码如下: import redis import datetime class Database: def __init__(self): self.host = 'localhost' sel

  • 编写多线程Python服务器 最适合基础

    编写一个多线程的Python服务器. 多线程Python服务器使用以下主要模块来管理多个客户端连接. 1. Python的线程模块 2. SocketServer的 ThreadingMixIn 上述两个模块中的第二个类使得Python服务器能够分叉新线程来照顾每一个新的连接.它也使程序异步运行线程. 这个多线程Python服务器程序包括以下三个Python模块. 1. Python-Server.py 2. Python-ClientA.py 3. Python-ClientB.py Pyth

  • 开源Web应用框架Django图文教程

    本文面向:有python基础,刚接触web框架的初学者. 环境:windows7 python3.5.1 pycharm专业版 Django 1.10版 pip3 一.Django简介 百度百科:开放源代码的Web应用框架,由Python语言编写...... 重点:一个大而全的框架,啥都替你考虑好了. 1. web框架介绍 具体介绍Django之前,必须先介绍WEB框架等概念. web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后"填空"或"修改"

  • Python web开发之用Tornado框架制作简易表白墙网站

    目录 前言 Tornado框架简单介绍 Tornado框架优势 Tornado框架缺点 Tornado框架使用场景 框架的组成 开始先试下Tornado 先导入本次要用的模块 视图 设置路由 设置前端socket,调用 运行程序,先试试水 设置主页,调用前端文件模板 设置 表白墙视图 留言 前言 今天我们要用Python做Web开发,做一个简单的[表白墙]网站.众所周知表白墙的功能普遍更多的是发布找人,失物招领,还是一个大家可以跟自己喜欢的人公开表白的平台 Tornado框架简单介绍 在Pyth

  • 基于C#动手实现网络服务器Web Server

    前言 最近在学习网络原理,突然萌发出自己实现一个网络服务器的想法,并且由于第三代小白机器人的开发需要,我把之前使用python.PHP写的那部分代码都迁移到了C#(别问我为什么这么喜欢C#),之前使用PHP就是用来处理网络请求的,现在迁移到C#了,而Linux系统上并没有IIS服务器,自然不能使用ASP.Net,所以这个时候自己实现一个功能简单的网络服务器就恰到好处地解决这些问题了. 基本原理 Web Server在一个B/S架构系统中起到的作用不仅多而且相当重要,Web开发者大部分时候并不需要

  • 详细解读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

  • Python Nose框架编写测试用例方法

    1. 关于Nose nose项目是于2005年发布的,也就是 py.test改名后的一年.它是由 Jason Pellerin 编写的,支持与 py.test 相同的测试习惯做法,但是这个包更容易安装和维护. nose的口号是:扩展unittest,nose让测试更简单! nose官网:http://nose.readthedocs.io/en/latest/index.html 使用nose框架进行Python项目的自动化测试,可以参考:http://www.cnblogs.com/liaof

  • python基于twisted框架编写简单聊天室

    本文实例为大家分享了使用python的twisted框架编写一个简单的聊天室具体代码,供大家参考,具体内容如下 下面是基本架构 代码: # -*- coding:utf-8 -*- from twisted.internet.protocol import Factory from twisted.protocols.basic import LineReceiver from twisted.internet import reactor user = {} class ChatReci(Li

  • python基于Selenium的web自动化框架

    1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Selenium WebDriver 和Selenium Grid: Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,python等)的形式导出成测试用例. Selenium WebDriver:提供Web自动化所需的API,主要用作浏览

  • 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

随机推荐