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算法学习之基数排序实例
Dec 18 Python
Python实现的下载8000首儿歌的代码分享
Nov 21 Python
Python多线程编程(一):threading模块综述
Apr 05 Python
python 时间戳与格式化时间的转化实现代码
Mar 23 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
分享一个pycharm专业版安装的永久使用方法
Sep 24 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
Apr 29 Python
安装pytorch时报sslerror错误的解决方案
May 17 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 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获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
基于php iconv函数的使用详解
2013/06/09 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
js格式化时间的方法
2015/12/18 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
重命名批处理python脚本
2013/04/05 Python
python爬取51job中hr的邮箱
2016/05/14 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
团购业务员岗位职责
2014/03/15 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
政府采购方案
2014/06/12 职场文书
2014年司法所工作总结
2014/11/22 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技