tornado基础配置
import tornado
.web
'''
tornado的基础web框架模块
'''
import tornado
.ioloop
'''
tornado的核心IO循环模块,封装了linux和epoll和BSD的kqueue
是tornado高效的基础
'''
class indexhandler(tornado
.web
.RequestHandler
):
def get(self
):
self
.write
("hello,tornado")
if __name__
=="__main__":
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
import tornado
.httpserver
class indexhandler(tornado
.web
.RequestHandler
):
def get(self
):
self
.write
("hello,tornado")
if __name__
=="__main__":
app
=tornado
.web
.Application
([
(r
"/",indexhandler
)
])
httpserver
=tornado
.httpserver
.HTTPServer
(app
)
httpserver
.listen
(8000)
tornado
.ioloop
.IOLoop
.current
().start
()
单进程与多进程
bind(port)
作用:将服务器绑定到指定的端口
start(num_process)
num_process:开启的进程数 默认开启一个进程 如果值为none或者小于等于0,开启对应硬件及其的cpu核心数子进程 例:
httpserver
=tornado
.httpserver
.HTTPServer
(app
)
httpserver
.bind
(8000)
httpserver
.start
(5)
补充说明
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对象,所有定义的选项变量都会作为该对象的属性