简介:
- tornado是Python的web框架。
- tornado和主流的web服务器框架有明显的区别:
- 它是非阻塞式服务器,而且速度非常快,得力于其非阻塞的方式和epoll的运用
- tornado可以每秒处理数以千计的连接(号称)
基本配置
1. app文件
- 包含__init__.py文件和视图文件
- init文件是为了让文件变成模块导包使用
base.py
import json
import tornado.web
class BaseHandel(tornado.web.RequestHandler):
# 初始化方法
def __init__(self, *args, **kwargs):
# 初始化父级的方法,防止被子级__init__覆盖
tornado.web.RequestHandler.__init__(self, *args, **kwargs)
# 重写options方法,避免报错
def options(self, *args):
self.set_status(204)
self.finish()
# 跨域
def set_default_headers(self):
# 请求来源
self.set_header("Access-Control-Allow-Origin", "*")
# 请求方式
self.set_header("Access-Control-Allow-Methods", "POST,GET,PUT,DELETE,TRACE,HEAD,PATCH,OPTIONS")
# 请求头
self.set_header("Access-Control-Allow-Headers", "*")
# 重写finish方法
def finish(self, chunk=None):
if chunk is not None and not isinstance(chunk, bytes): # 判断是否是字节码
chunk = json.dumps(chunk,
indent=4, # 默认四个空格
sort_keys=True, # 按照keys排序
default=str, # 默认类型都是字符串
ensure_ascii=False) # 禁止转码
try:
# 解决乱码的问题
tornado.web.RequestHandler.write(self, chunk)
except Exception as e:
print(e.args)
tornado.web.RequestHandler.finish(self)
- 初始化父级方法,防止被子级覆盖
- 重写options方法,为了能跨域成功,防止报405
<