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之坑爹的字符编码
Sep 28 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
pytorch构建网络模型的4种方法
Apr 13 Python
PyQt实现界面翻转切换效果
Apr 20 Python
使用python 3实现发送邮件功能
Jun 15 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
eclipse创建python项目步骤详解
May 10 Python
Python进程池Pool应用实例分析
Nov 27 Python
Python编程快速上手——Excel表格创建乘法表案例分析
Feb 28 Python
python 5个顶级异步框架推荐
Sep 09 Python
Python读写yaml文件
Mar 20 Python
python中urllib包的网络请求教程
Apr 19 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
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
解析php中memcache的应用
2013/06/18 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
Python线性回归实战分析
2018/02/01 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
python树莓派红外反射传感器
2019/01/21 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
pyspark 随机森林的实现
2020/04/24 Python
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
实习自荐信
2013/10/13 职场文书
环保志愿者活动总结
2014/06/27 职场文书
大学生个人求职信例文
2014/07/07 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android