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中根据字符串调用函数的实现方法
Jun 12 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
python中Apriori算法实现讲解
Dec 10 Python
python实现windows下文件备份脚本
May 27 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
python实现删除列表中某个元素的3种方法
Jan 15 Python
python设置代理和添加镜像源的方法
Feb 14 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
Aug 07 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 Python
Python使用openpyxl模块处理Excel文件
Jun 05 Python
python manim实现排序算法动画示例
Aug 14 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连接MongoDB示例代码
2012/09/06 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
跟老齐学Python之Python安装
2014/09/12 Python
python实现合并两个数组的方法
2015/05/16 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
利用python批量检查网站的可用性
2016/09/09 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python多进程重复加载的解决方式
2019/12/13 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
Python extract及contains方法代码实例
2020/09/11 Python
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
建筑设计学生的自我评价
2014/01/16 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
教师节老师寄语
2015/05/28 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
MySQL查询日期时间
2022/05/15 MySQL