Tornado Web Server框架编写简易Python服务器
作者:acdreamers 发布时间:2021-10-18 09:23:52
标签: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
即可得到需要的数据。
来源:https://blog.csdn.net/ACdreamers/article/details/24668551
0
投稿
猜你喜欢
- 我们都知道Django rest framework这个库,默认只支持批量查看,不支持批量更新(局部或整体)和批量删除。下面我们来讨论这个问
- 判断是否xx开始使用startswith示例代码:String = "12345 上山打老虎"if str(String
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下#!/usr/bin/env python# -*- c
- 先写一个批处理文件,给个例子。 代码如下:set rq=%date:~0,10% exp system/system的
- 介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。摘要:
- 什么是MobileNetV2模型MobileNet它哥MobileNetV2也是很不错的呢MobileNet模型是Google针对手机等嵌入
- 任何一个行业里,当有一头近乎垄断的大象盘踞着的时候,生活在大象身后的蚂蚁们既是悲哀又是幸运的。悲哀的是市场已近乎被大象垄断留给他们的空间已经
- ADODB.Stream在ASP编程中往往用于无组件上传,并且可以指定文件编码,可以应对各种不同的需要。但是在使用ADODB.Stream过
- 刚才画散点图要用到图例,可是matplotlib.pyplot.plot(x,y,'.')画出的散点图中图例是两个点(因为p
- 啥也不说了,大家还是直接看图吧!补充知识:python http request header主要内容http request 请求头主要包
- 最近对爬虫比较感兴趣,所以就学了一下,看人家都在网上爬取那么多美女图片养眼,我也迫不及待的试了一下,不多说,切入正题。其实爬取图片和你下载图
- os.stat(path) :用于在给定的路径上执行一个系统 stat 的调用。path:指定路径返回值:st_mode: inode 保护
- 引言关键!!!!使用loc函数来查找。话不多说,直接演示:有以下名为try.xlsx表:1.根据index查询条件:首先导入的数据必须的有i
- 练手项目,先上图先实现一个简单的串口工具,为之后的上位机做准备代码如下:github 下载地址pyserial_demo.pyimport
- 建造者模式:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。基本思想某类产品的构建由很多复杂组件组成;这些组件中的
- 人工智能和区块链诞生至今已经有了十几年,当这些技术出现时,人们都说他们会改变世界,但至今为止,这两项技术对现实的影响依然有限。从技术上看人工
- 我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事。我们通常的做法都是通过export with rows=no来得到,但它的输
- 本文实例为大家分享了python+tkinter实现学生管理系统的具体代码,供大家参考,具体内容如下 from tkinter i
- 一、停止线程利用Threading库我们可以很方便地创建线程,让它按照我们的想法执行我们想让它执行的事情,从而加快程序运行的效率。然而有一点
- 第一种情况os.system('ps aux')执行系统命令,没有返回值第二种情况result = os.popen(