Tornado Web Server框架编写简易Python服务器
我们都知道在Web开发中,都需要服务器,比如JavaWeb开发的Tomcat,WebLogic,WebSphere,现在来看利用TornadoWebServer框架如何写一个简易的Python服务器。
一般来说只需要实现get和post方法就可以了。以上次使用redis数据库的例子说明,数据库插入代码如下:
importredis
importdatetime
classDatabase:
def__init__(self):
self.host='localhost'
self.port=6379
self.write_pool={}
defadd_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
defbatch_write(self):
try:
r=redis.StrictRedis(host=self.host,port=self.port)
r.mset(self.write_pool)
exceptException,exception:
printexception
defadd_data():
beg=datetime.datetime.now()
db=Database()
foriinrange(1,10000):
db.add_write('meituan','beijing',2013,i,1,i)
db.batch_write()
end=datetime.datetime.now()
printend-beg
if__name__=='__main__':
add_data()
以上代码插入了数据,那么现在用我们的服务器来访问一些数据。
importjson
importredis
importtornado.web
importtornado.httpserver
fromtornado.optionsimportdefine,options
define("port",default=8888,type=int)
classDealHandler(tornado.web.RequestHandler):
definitialize(self):
self.port=6379
self.host="localhost"
defget(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=[]
foriinrange(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)))
classExampleHandler(tornado.web.RequestHandler):
defget(self):
who=self.get_argument("who",None)
ifwho:
self.write("Hello,"+who)
else:
self.write("HelloWorld!")
defpost(self):
who=self.get_argument("who",None)
ifwho:
self.write("Hello,"+who)
else:
self.write("HelloWorld!")
classApplication(tornado.web.Application):
def__init__(self):
handlers=[
(r"/",ExampleHandler),
(r"/deal",DealHandler),
]
settings=dict()
tornado.web.Application.__init__(self,handlers,settings)
defcreate_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
即可得到需要的数据。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。