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之模块的加载
Oct 24 Python
Python实现Const详解
Jan 27 Python
Python实现竖排打印传单手机号码易撕条
Mar 16 Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 Python
分析python请求数据
Aug 19 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
python实现猜单词游戏
May 22 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 Python
Python和Bash结合在一起的方法
Nov 13 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
PHP导入Excel到MySQL的方法
2011/04/23 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
js 图片等比例缩放代码
2010/05/13 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
js动态切换图片的方法
2015/01/20 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
浅谈python可视化包Bokeh
2018/02/07 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
python面向对象 反射原理解析
2019/08/12 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
秋季校运动会广播稿
2014/02/23 职场文书
社区居务公开实施方案
2014/03/27 职场文书
公司聘任书模板
2014/03/29 职场文书
2014年工商所工作总结
2014/12/09 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
学习心得体会
2019/06/20 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis