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


Posted in Python onJuly 28, 2018

我们都知道在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

即可得到需要的数据。

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

Python 相关文章推荐
python关闭windows进程的方法
Apr 18 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
python使用锁访问共享变量实例解析
Feb 08 Python
python基础教程项目四之新闻聚合
Apr 02 Python
python3解析库pyquery的深入讲解
Jun 26 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
python占位符输入方式实例
May 27 Python
python 视频逐帧保存为图片的完整实例
Dec 10 Python
python中os包的用法
Jun 01 Python
Python性能分析工具py-spy原理用法解析
Jul 27 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
Python实例教程之检索输出月份日历表
Dec 16 Python
python使用tornado实现登录和登出
Jul 28 #Python
基于python实现简单日历
Jul 28 #Python
python使用tcp实现局域网内文件传输
Mar 20 #Python
基于python3实现socket文件传输和校验
Jul 28 #Python
python多进程实现文件下载传输功能
Jul 28 #Python
python如何生成网页验证码
Jul 28 #Python
python3利用tcp实现文件夹远程传输
Jul 28 #Python
You might like
在PHP中利用XML技术构造远程服务(下)
2006/10/09 PHP
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
基于mysql的论坛(7)
2006/10/09 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
鼠标图片振动代码
2006/07/06 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
Python threading的使用方法解析
2019/08/28 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
Nike墨西哥官网:Nike MX
2020/08/30 全球购物
Android interview questions
2016/12/25 面试题
开办化妆品公司创业计划书
2013/12/26 职场文书
小学生暑假家长评语
2014/04/17 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
廉政承诺书范文
2015/04/28 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js