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