Flask框架信号用法实例分析


Posted in Python onJuly 24, 2018

本文实例讲述了Flask框架信号用法。分享给大家供大家参考,具体如下:

项目功能复杂,代码量越大,就越需要做业务解耦。否则在其之上做开发和维护是很痛苦的,尤其是对于团队的新人。Flask从0.6开始,通过Blinker提供了信号支持。信号就是在框架核心功能或者一些Flask扩展发生工作时所发送的通知,用于帮助你解耦应用。

Blinker的使用

安装

pip install blinker

Blinker的信号与接收方式

from blinker import signal
s = signal("test start")
def each(round):
  print("each {}".format(round))
def round_two(round):
  print("round {}".format(round))
s.connect(each)
s.connect(round_two,sender=2)  # 表示值为2的时候才会接收信号
for index in range(1,4):
  s.send(index)

打印结果:

each 1
each 2
round 2
each 3

或者简写成:

from blinker import signal
s = signal("test start")
@s.connect
def each(round)
  print("each {}".format(round))

Flask中内置信号

  • flask.template_rendered:模板渲染成功的时候发送,这个信号与模板实例template上下文的字典一起调用。
  • flask.request_started:建立请求上下文后,在请求处理开始前发送,订阅者可以用request之类的标准代理访问请求。
  • flask.request_finished:在响应发送给客户端之前发送,可以传递reponse
  • flask.got_request_exception:在请求处理中抛出异常时发送,异常本身会通过execption传递到订阅函数。
  • flask.request_tearing_down:在请求销毁时发送,它总是被调用,即使发生异常。
  • flask.appcontext_tearing_down:在应用上下文销毁时发送,它总是被调用,即使发生异常。

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

Python 相关文章推荐
Python中__new__与__init__方法的区别详解
May 04 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
Python实现mysql数据库更新表数据接口的功能
Nov 19 Python
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
Python实现简单层次聚类算法以及可视化
Mar 18 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
Dec 23 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 Python
解决hive中导入text文件遇到的坑
Apr 07 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 Python
python运行脚本文件的三种方法实例
Jun 25 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 #Python
Django中的Model操作表的实现
Jul 24 #Python
Python实现的tcp端口检测操作示例
Jul 24 #Python
python正则表达式之对号入座篇
Jul 24 #Python
Python 字符串与二进制串的相互转换示例
Jul 23 #Python
Python二进制串转换为通用字符串的方法
Jul 23 #Python
Python基于多线程实现ping扫描功能示例
Jul 23 #Python
You might like
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
详解Python中expandtabs()方法的使用
2015/05/18 Python
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
Python决策树分类算法学习
2017/12/22 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
利用python 读写csv文件
2020/09/10 Python
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
linux下进程间通信的方式
2013/01/23 面试题
高校毕业生登记表自我鉴定
2013/11/03 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
MySQL详细讲解变量variables的用法
2022/06/21 MySQL