文章来源:http://blog.csdn.net/ACdreamers/article/details/24668551
我们都知道在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
即可得到需要的数据。。。