Tornado写简易服务器,转自ACdreamer

本文介绍如何使用Python的TornadoWebServer框架创建简易服务器,并通过Redis数据库进行数据存储和检索,包括数据库操作示例及服务器访问数据方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们都知道在Web开发中,都需要服务器,比如Java Web开发的Tomcat,WebLogic,WebSphere,现在来看利

Tornado Web Server框架如何写一个简易的Python服务器。


一般来说只需要实现get和post方法就可以了。以上次使用redis数据库的例子说明,数据库插入代码如下:

</pre><pre name="code" class="html"><pre name="code" class="python">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


即可得到需要的数据。。。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值