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


猜你喜欢
- 一.Memory Dumps 1).Global Area ALTER SESSION SET EVENTS ‘immediate trac
- 我就废话不多说了,大家还是直接看代码吧!'''Created on 2018-4-4'''k
- 有时候需要把文件中的数据放入到数组中,这里提供了一种方法,可以根据文件结尾的标记进行数据拆分,然后再把拆分的文件放入数组中# -*-codi
- 1.静态方法(staticmethod)静态方法:@staticmethod也是一个类方法,是可以直接类调用的。个人认为的使用场景是:只要要
- 目标减少资源加载可以明显的优化页面加载的速度,所以可以减少页面载入时立即下载的图片的数量,以提高页面加载速度,其他的图片在需要的时候再进行加
- 处理多个数据和多文件时,使用for循环的速度非常慢,此时需要用多线程来加速运行进度,常用的模块为multiprocess和joblib,下面
- 本文实例讲述了PHP中Static(静态)关键字功能与用法。分享给大家供大家参考,具体如下:1、什么是static?static 是C++中
- [原文地址] VS 2008 Performance Improvements[原文发表时间] Thursday, September 27
- 本文实例讲述了MySQL Union合并查询数据及表别名、字段别名用法。分享给大家供大家参考,具体如下:union关键字SELECT s_i
- 本文实例为大家分享了Python实现打乒乓小游戏的具体代码,供大家参考,具体内容如下源码奉上:import sysimport cfgimp
- 前言在业务迭代中,随着数据量的上升,会出现慢SQL情况,但是当我们去分析单条SQL的时候,发现其执行速度并没有那么慢,原因是什么呢,那么就可
- 前言单例模式(Singleton Pattern),是一种软件设计模式,是类只能实例化一个对象,目的是便于外界的访问,节约系统资源,如果希望
- 展示:一般情况下序列化得到的外键的内容只是id:...{ fields: { uat_date: "2015-07-
- < ?php if (!function_exists("T7FC56270E7A70FA81A5935B72EACBE29
- MySQL报错:错误代码: 1293 Incorrect table definition; there can be only one T
- eval()函数可以将字符串型的list、tuple、dict等等转换为原有的数据类型即使用eval可以实现从元组,列表,字典型的字符串到元
- 目录1.变量的引用的底层原理2.变量的分类Python的变量,简单来说有数值型,布尔型,字符串类型,列表,元组,字典等6大类。那么不同变量类
- 直接pip install impala 是不行滴,按照以下步骤安装就会成功!一路安装就可以1、pip install six2、pip i
- DBScan 算法解释说明DBScan 是密度基于空间聚类,它是一种基于密度的聚类算法,其与其他聚类算法(如K-Means)不同的是,它不需
- Step 1. 获取混淆矩阵#首先定义一个 分类数*分类数 的空混淆矩阵 conf_matrix = torch.zeros(Emotion