欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python tornado基本使用流程

程序员文章站 2023-11-23 09:38:40
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): #对...

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对象,所有定义的选项变量都会作为该对象的属性

本文地址:https://blog.csdn.net/weixin_43920680/article/details/107121204