首页 > 其他分享 >Tornado写简易服务器

Tornado写简易服务器

时间:2023-05-31 15:01:49浏览次数:32  
标签:__ get Tornado self write 简易 tornado 服务器 def


我们都知道在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


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



标签:__,get,Tornado,self,write,简易,tornado,服务器,def
From: https://blog.51cto.com/u_16146153/6386947

相关文章

  • nc这个工具用于伪造c2服务器 做c2初始连接的抓包分析实在是太tm好用了!必要时候配合APA
    DNSSpoofingwithAPATEDNS20thFebruary2015Wannes.ColmanLeaveacommentIfyou quicklywanttofindoutwhatthemalwareinyoursandboxisresolving,youcanuseApateDNS.ThisfreetoolwilllistenforoutgoingDNSrequestsandisabletospoofthe......
  • 用Java开发HTTP代理服务器
    HTTP代理服务器是一种网络应用,它充当位于客户端和目标服务器之间的中间节点,将客户端发出的HTTP请求转发给目标服务器,并将目标服务器返回的HTTP响应内容回传给客户端。通过使用代理服务器,客户端可以避免直接访问目标服务器,从而更加安全地访问互联网资源。以下是使用Java开发HTTP......
  • git 如何将GitHub仓库做服务器:015
    将Github的换成仓库来作为服务器使用: 1.创建(远程仓库)2.删除掉之前建立的链接查看已建立的链接:gitremote-v删除建立的链接:gigremoterm远程仓库名  3.重新建立刚刚创建的(远程仓库)链接:gitremoteaddtesthtmlhttps://github.com/he6868/he6868.github.io.g......
  • 海外独立服务器的优势
    在全球经济的一体化的同时跨境电商行业也随之不断发展,现在不仅仅是企业用户在发展境外业务,很多个人用户也开始搭建境外网站服务,而搭建境外网站就需要海外服务器来构建搭建平台,所以独立服务器的用户量也是在与日俱增。今天小编就来介绍下独立服务器的优势。优势1:免备案海外独立服务......
  • 什么是大带宽服务器? 如何选择?
    什么是大带宽服务器?大带宽的定义很广泛,有些IDC定义大带宽服务器为100M,有些IDC定义为1G,更有些IDC机房定义为10G,以服务器的唯一功能就是带宽大,与非大带宽服务器比较,更明显的分别是网络稳定性,所以大带宽服务器一般是给特定行业使用如何选择大带宽服务器?配置选择因为大带......
  • /etc/netplan/network-manager-all.yaml 配置服务器ip
    本文为博主原创,转载请注明出处:/etc/netplan是用于配置Ubuntu系统网络接口的目录。在Ubuntu中,网络配置的默认工具为  Netplan,而/etc/netplan则是Netplan配置文件的存储位置。在/etc/netplan目录中,通常会有一个或多个YAML格式的文件,用来定义系统中的网络接......
  • 使用Ansible 收集服务器元数据信息到CMDB数据库
    安装必要组件:pipinstallansible-cmdbyuminstall-ymariadbMySQL-python创建一个Ansibleplaybook文件,例如collect_facts.yml,并添加以下内容:-name:CollectserverfactsintoCMDBhosts:allgather_facts:truebecome:truevars:db_host:"192.168.0......
  • 浪潮信息入围Gartner全球服务器标杆厂商 多项能力获得认可
    近日,Gartner发布全球服务器市场指南《MarketGuideforServers》,从市场定义、市场方向、市场规模等角度对全球服务器厂商进行全面评估与研究,并甄选出代表性厂商,是全球用户进行服务器选型的重要参考和依据。浪潮信息入围全球服务器标杆厂商,在液冷、开放计算等多方面能力获得高度认......
  • 云服务器与独立服务器的性能比较:您需要了解的关键差异
    在当今数字化时代,企业和个人都需要可靠的服务器来托管其网站和应用程序。但在选择服务器时,很多人会面临一个关键问题:是选择云服务器还是独立服务器?这两种服务器类型在性能和功能方面存在差异,本文将探讨云服务器和独立服务器之间的关键差异,以帮助您做出明智的选择。一、成......
  • 在树莓派上使用numpy实现简单的神经网络推理,pytorch在服务器或PC上训练好模型保存成nu
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是mlp识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:1importtorch2importtorch.nnasnn3importtorch.optimasoptim4fromtorchvisionimportdatasets,transfor......