python tornado基本流程

    技术2025-05-29  19

    tornado基础配置

    import tornado.web ''' tornado的基础web框架模块 ''' import tornado.ioloop ''' tornado的核心IO循环模块,封装了linux和epoll和BSD的kqueue 是tornado高效的基础 ''' #一个业务处理类 class indexhandler(tornado.web.RequestHandler): #处理get请求,不能处理post请求 def get(self): #对应http请求的方法 #给浏览器响应信息 self.write("hello,tornado") if __name__=="__main__": #实例化一个app对象 #Application:是tirnado web框架的核心应用类,是与服务器对用的接口 #里面保存了路由映射表,有一个listen方法用来创建一个http服务器的实例并绑定了端口 app=tornado.web.Application([ (r"/",indexhandler) ]) #绑定监听端口 #注意:此时服务器并没有开启监听 app.listen(8000) ''' IOLoop.current():返回当前线程的IOLoop实例 IOLoop.start():启动IOLoop实例的I/O循环,同时开始监听 ''' tornado.ioloop.IOLoop.current().start()

    使用http服务器对象

    import tornado.web import tornado.ioloop #引入httpserver模块 import tornado.httpserver #一个业务处理类 class indexhandler(tornado.web.RequestHandler): #处理get请求,不能处理post请求 def get(self): self.write("hello,tornado") if __name__=="__main__": app=tornado.web.Application([ (r"/",indexhandler) ]) # app.listen(8000) #实例化一个http服务器对象 httpserver=tornado.httpserver.HTTPServer(app) httpserver.listen(8000) tornado.ioloop.IOLoop.current().start()

    单进程与多进程

    bind(port)

    作用:将服务器绑定到指定的端口

    start(num_process)

    num_process:开启的进程数 默认开启一个进程 如果值为none或者小于等于0,开启对应硬件及其的cpu核心数子进程 例:

    # app.listen(8000) #实例化一个http服务器对象 httpserver=tornado.httpserver.HTTPServer(app) httpserver.bind(8000)#将服务器绑定到指定的端口上 httpserver.start(5)#num_process进程数

    补充说明

    app.listen()

    只能在单进程模式中使用

    多进程

    虽然tornado提供了一次性启动多个进程的方式,但是不建议上述方式启动多进程。而是手动启动多进程,并且能绑定多个端口。 原因: 1:每个子进程都会从父进程中复制一份IOLoop的实例,如果在创建子进程前修改了IOLoop,会影响所有的子进程 2:所有的进程都是由一个命令启动的,无法做到在不停止服务的情况下修改代码 3:所用进程共享一个端口,想要分别监控很困难

    options

    tornado为我们提供了tornado.options模块 作用:全局参数的定义,存储,转换

    基础方法与属性

    tornado.options.define()

    功能:

    用来定义options选项变量的方法

    参数:

    name:选项变量名字,必须保证唯一性,否则报错 default:选项变量默认值,默认为none type:设置选项变量类型,从命令行或配置文件导入参数时tornado会根据类型转换输入的值,转换失败会报错,可以是str,float,datatime.如果没有设置type,会根据default进行转换。如果没有设置default,则不进行转换 multiple:设置选项变量是否可以为多个值,默认为false help:提示信息

    实例:
    tornado.options.define("post",default=8000,type=int) tornado.options.define("list",default=[],type=str)

    tornado.options.options

    全局的options对象,所有定义的选项变量都会作为该对象的属性

    Processed: 0.011, SQL: 9