当前位置: 移动技术网 > IT编程>脚本编程>Python > 荐 python tornado基本流程

荐 python tornado基本流程

2020年07月05日  | 移动技术网IT编程  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网