sanic中间件和监听器
一:中间件
中间件是服务器在请求之前或之后执行的功能,他们可以用来修改修改用户定义处理函数的请求或相应。
Sanic提供两种类型的中间件:请求和响应。
两者都是使用@app.middleware
装饰器声明,两个装饰器分别需要传入一个代表其类型的参数:request
和response
,
下面举一个简单的栗子:
from sanic.response import text
@app.route("/get_info")
async def get_info(request):
print(request.url)
return text("it is ok!")
@app.middleware("request")
async def get_request_middleware(request):
print("请求中间件")
@app.middleware("response")
async def get_response_middleware(request,response):
print("响应中间件")
当我们访问/get_info
请求时,打印结果将会是这样的:
请求中间件 http://localhost:5000/get_info 响应中间件
二:监听器
如果需要在服务器启动/关闭的时候,执行一些特殊的代码,则可以使用以下监听器:
before_server_start:在服务器启动之前执行
after_server_start:在服务器启动之后执行
before_server_stop:在服务器关闭之前执行
after_server_stop:在服务器关闭之后执行
举个栗子:
@app.listener("before_server_start")
async def before_server_start(request,loop):
print("before_server_start")
@app.listener("after_server_start")
async def after_server_start(request,loop):
print("after_server_start")
@app.listener("before_server_stop")
async def before_server_stop(request,loop):
print("before_server_stop")
@app.listener("after_server_stop")
async def after_server_stop(request,loop):
print("after_server_stop")
sanic中间件和监听器的更多相关文章
- Sanic框架
Sanic框架 1. 入门 Sanic 是一款类似Flask的Web服务器,它运行在Python 3.5+上. 除了与Flask功能类似之外,它还支持异步请求处理,这意味着你可以使用Python3.5 ...
- Zend-MVC intro
Zend-MVC intro Zend MVC层建立在servicemanager.eventmanager.http.stdlib.几个组件之上.相关组件介绍会在其他文章中详细说明. 除了以上4大组 ...
- 阿里中间件——diamond
一.前言 最近工作不忙闲来无事,仔细分析了公司整个项目架构,发现用到了很多阿里巴巴集团开源的框架,今天要介绍的是中间件diamond. 二.diamond学习笔记 1.diamond简介 diamon ...
- 中间件、MetaQ入门学习
目录 . 中间件技术 . MetaQ中间件 . MetaQ编程实践 1. 中间件技术 0x1: 中间件简介 中间件(Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的 ...
- 淘宝JAVA中间件Diamond详解(2)-原理介绍
淘宝JAVA中间件Diamond详解(二)---原理介绍 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本次为大家带来的是diamond核心原理的介绍,主要包括server ...
- react生命周期,中间件、性能优化、数据传递、mixin的使用
https://github.com/lulujianglab/blog/issues/34 一.生命周期 1,初始化的执行顺序,初始生命周期执行过程详解 class initSate extends ...
- 常用的消息队列中间件mq对比
原文地址:https://blog.csdn.net/qq_30764991/article/details/80239076 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量 ...
- ACtiveMQ中间件-发布订阅模式
前言:ActiveMQ学习心得 1.MQ是什么 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信, ...
- 淘宝JAVA中间件Diamond详解之简介&快速使用 管理持久配置的系统
http://my.oschina.net/u/435621/blog/270483?p=1 淘宝JAVA中间件Diamond详解(一)---简介&快速使用 大家好,今天开始为大家带来我们通用 ...
随机推荐
- 数据持久化之轻量级Kv持久化(二)
阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680本篇文章将继续从以下两个内容来介绍轻量级Kv持久化: [SharedPre ...
- SqlServer 跨库访问
同实例跨库 只需要 库名.dbo.表 dbo可省略 如: use Test select * from rdrecords select * from oa.dbo.UserInfo 不同实例与不同i ...
- 使用androidstudio时遇到的一些小错误
1 路径名字中不能有汉字 报如下错误:Error:(1, 0) Your project path contains non-ASCII characters. This will most lik ...
- 【记录】centOS 搭建logstash +docker搭建elasticsearch伪集群+kibana链接集群elasticsearch节点
[注意]本文主要用于自我记录,注释较少. 安装logstash 1.上传logstash-6.4.3.tar.gz到服务中 2.tar –zxvf logstash-6.4.3.tar.gz 3.cd ...
- Keepalived高可用服务
Keepalived高可用服务 避免负载均衡服务出现单点问题 高可用服务原理 Keepalived的工作原理: Keepalived高可用对之间是通过VRRP通信的,因此,我从 VRRP开始了解起: ...
- redis的密码设置
若连接redis时报错:Redis (error) NOAUTH Authentication required.,通常是由于redis设了密码但连接时却未提供密码引起的. 设置密码: 编辑redis ...
- shell 符号的定义(一)
在shell中,在判断数值大小除了可以用”(( ))”的形式外,还可以使用”[ ]”.但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小 ...
- HDU-4568 TSP+最短路
题意:给一个n行m列的矩阵,矩阵上的数字代表经过代价(这里要注意每经过一次都要付出代价),矩阵上有几个宝藏,猎人可以从任意边界进去矩阵取完所有宝藏后从任意边界出来. 解法:一看到宝藏数量小于等于13且 ...
- spring中bean的高级属性之list, set, map以及props元素(含举例)
转自:http://qingfeng825.iteye.com/blog/144704 list, set, map和props元素分别用来设置类型为List,Set,Map和Propertis的属性 ...
- day05 python字典
day05 python 一.字典 1.dict 用{}表示, 存放的是: key:value (开发的都知道的是键值对数据,这样说) key: 关键字不能重复, 不 ...