Tornado框架part1

本文详细介绍了Tornado框架,包括其起源、特点和主要部分。Tornado是一个高性能的Python Web框架,以其异步非阻塞IO和轻量级特性著称。文中还展示了项目的基本运行步骤,如安装、开启调试模式、路由拆分、视图编写以及多进程模式。在请求处理部分,讲解了如何获取请求信息、接收查询字符串、请求体以及路由参数。
摘要由CSDN通过智能技术生成

一、tornado介绍

1、介绍

Tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,最早由4名Google前软件工程师(布雷特·泰勒)2007创办的Friendfeed(一个社交聚合网站)开发而来的。通过使用非阻塞IO,Tornado可以处理数以万计的开放连接,是long polling、WebSockets和其他需要为用户维护长连接应用的理想选择。

目前最新版本6.1, 我们实际项目开发是使用的不可能是最新版本,所以在此我们在tornado基础阶段所学所用的版本为6.0.

2、特点

  • 开源的轻量级全栈式Web框架,提供了一整套完善的异步编码方案。

  • 高性能

    基于协程,底层就是基于asyio来实现的完整的协程调度

    采用异步非阻塞IO处理方式,不依赖多进程或多线程
    采用单进程单线程异步IO的网络模式,其高性能源于Tornado基于Linux的Epoll(UNIX为kqueue)的异步网络IO,具有出色的抗负载能力

    Tornado为了实现高并发和高性能,使用了一个IOLoop事件循环来处理socket的读写事件

  • WSGI全栈替代产品,Tornado把应用(Application)和服务器(Server)结合起来,既是WSGI应用也可以是WSGI服务,通俗来讲就是说,Tornado既是web服务器也是web框架,甚至可以通过Tornado替代uwsgi/gunicorn来运行Flask或者django框架

3、主要部分

  • Web 框架 (包括用来创建 Web 应用程序的 RequestHandler 类, 还有很多其它支持的类).
  • HTTP 客户端和服务器的实现 (HTTPServerAsyncHTTPClient).
  • 异步网络库 (IOLoopIOStream), 对 HTTP 的实现提供构建模块, 还可以用来实现其他协议.
  • 协程库 (tornado.gen) 让用户通过更直接的方法来实现异步编程, 而不是通过回调的方式.

二、项目的基本运行

1、安装

pip3 install tornado==6.0.4

基本写法如下:
server.py:

from tornado import ioloop
from tornado import web

class Home(web.RequestHandler):
	def get(self):
		# self.write 响应数据
		self.write("hello!")

def make_app():
	# Application是tornado web框架的核心应用类,是与服务器对应的接口,里面保存了路由映射表
	# handlers 设置路由列表
	return web.Application(handlers=[
		(r'/',Home)
	])

if __name__ == "__main__":
	# 创建应用实例对象
	app = make_app()
	# 设置监听的ip和端口
	app.listen(8888)
	# ioloop,全局的tornado事件循环,是服务器的引擎核心,start表示创建IO事件循环,等待客户端连接
	ioloop.IOLoop.current().start()

运行后浏览器访问:
运行结果

2、开启调试模式

from tornado import ioloop
from tornado import web
from tornado import autoreload
from tornado.options import define,options,parse_command_line

# 配置信息
settings = {
   
	'debug':True
}
define("port",default=8888,type=int,help="设置监听端口号,默认8888")

# 类视图
class Home(web.RequestHandler):
	def get(self):
		# self.write 响应数据
		self.write("hello!")

def make_app():
	# Application是tornado web框架的核心应用类,是与服务器对应的接口,里面保存了路由映射表
	# handlers 设置路由列表
	return web.Application(handlers=[
		(r'/',Home)
	],**settings) #加载配置


if __name__ == "__main__":
	# 解析终端启动命令,格式:python server.py --port=端口号
	parse_command_line()
	#  创建应用实例对象
	app = make_app()
	# 设置监听的ip和端口
	app.listen(options.port)
	# ioloop,全局的tornado事件循环,是服务器的引擎核心,start表示创建IO事件循环,等待客户端连接
	ioloop.IOLoop.current().start()

运行结果:
运行

3、路由拆分

from tornado import ioloop
from tornado import web
from tornado.options import define,options,parse_command_line

# 配置信息
settings = {
   
	'debug':True
}

# 类视图
class Home(web.RequestHandler):
	def get(self):
		# self.write 响应数据
		self.write("hello!")

url = [
	(r"/",Home)
]


if __name__ == "__main__":
	define("port", default=8888, type=int, help="设置监听端口号,默认8888")
	define("host", default="127.0.0.1"
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值