首页 > 其他分享 >flask信号

flask信号

时间:2023-04-07 20:22:30浏览次数:48  
标签:flask signal request signals 信号 执行

flask信号

什么是信号?

项目功能复杂,代码量越大,就越需要做业务解耦,我们在程序的某些环节发出信号,我们如果给这个信号绑定了方法,那么就会触发方法的执行。

flask框架的信号基于blinker模块,在框架的一些核心功能做扩展时,我们可以只让其执行一句发出信号的代码,扩展的功能写在别处。

pip install blinker

内置信号

基本使用

from flask import Flask
from flask import signals

# 1.定义一个函数
def exception_log(*args, **kwargs):
    print('出错了,记录一下', args, kwargs)


app = Flask(__name__)
# 2.导入内置信号,并绑定函数
signals.got_request_exception.connect(exception_log)


@app.route('/')
def index():
    # 3.执行到这里的时候自动触发函数
    9 / 0
    return 'hello world'


if __name__ == '__main__':
    app.run()

flask内置信号总结

# 内置信号: flask少一些,django多一些
request_started = _signals.signal('request-started')                # 请求到来前执行
request_finished = _signals.signal('request-finished')              # 请求结束后执行
 
before_render_template = _signals.signal('before-render-template')  # 模板渲染前执行
template_rendered = _signals.signal('template-rendered')            # 模板渲染后执行
 
got_request_exception = _signals.signal('got-request-exception')    # 请求执行出现异常时执行
 
request_tearing_down = _signals.signal('request-tearing-down')      # 请求执行完毕后自动执行(无论成功与否)
appcontext_tearing_down = _signals.signal('appcontext-tearing-down')# 应用上下文执行完毕后自动执行(无论成功与否)
 
appcontext_pushed = _signals.signal('appcontext-pushed')            # 应用上下文push时执行
appcontext_popped = _signals.signal('appcontext-popped')            # 应用上下文pop时执行
message_flashed = _signals.signal('message-flashed')                # 调用flask在其中添加数据时,自动触发

自定义信号

  1. 定义出一个新的信号

    信号名=_signals.signal('信号名')

  2. 写一个函数,并绑定自定义的信号

    信号名.connect(函数)

  3. 自定义指定位置触发

    信号名.send('可以传入一些参数,与函数所需参数对应')

django中使用信号

https://www.cnblogs.com/liuqingzheng/articles/9803403.html

标签:flask,signal,request,signals,信号,执行
From: https://www.cnblogs.com/Leethon-lizhilog/p/17297249.html

相关文章

  • django/flask高并发部署
    django和flask是同步框架,部署的时候使用uwsgi部署,uwsgi是多进程多线程框架,并发量不高大概几十。我们可以通过uwsgi加gevent部署成异步程序,普通的部署方式uwsgi-x./luffyapi.xml这是使用genvent提高并发部署uwsgi--gevent50--gevent-monkey-patch./luffyapi.xml......
  • flask源码解析
    flask源码解析本篇主要是针对于以下一些问题进行源码剖析,并补充解释一些python语法的用法与应用场景。flask生命周期流程flask的request、session等都是导入进来的,也就意味着每次请求,我们所用的都是同一个request对象,它为什么能够按照同种方式取到自己request对象值呢flask......
  • flask5
    今日内容1信号#Flask框架中的信号基于blinker(安装这个模块),其主要就是让开发者可是在flask请求过程中定制一些用户行为flask和django都有#观察者模式,又叫发布-订阅(Publish/Subscribe)23种设计模式之一pip3.8installblinker#信号:signial翻译过来的,并发编程中学过......
  • flask框架04 导出项目 local flask生命执行流程 wtforms
    今日内容详细目录今日内容详细1请求上下文分析(源码:request原理)1.1导出项目的依赖1.2函数和方法1.3threading.local对象1.4偏函数1.5flask整个生命执行流程(1.1.4版本为例)2wtforms(了解)1请求上下文分析(源码:request原理)1.1导出项目的依赖#之前pipfreeze>requ......
  • 【Java 并发】【九】【AQS】【七】Semaphore信号量底层机制原理
    1 前言接下来我们来看看Semaphore,也是基于之前讲解的AQS来实现的,建立在AQS体系之上的一个并发工具类。2  Semaphore是什么Semaphore,它是一个信号量,主要作用是用来控制并发中同一个时刻执行的线程数量,可以用来做限流器,或者流程控制器。在创建的时候会指定好它有多少个信号量......
  • 基于DNN深度学习网络的OFDM信号检测算法的仿真,对比LS和MMSE
    1.算法描述        随着无线通信的快速发展,5G正逐渐成长为支撑全社会各行业运作的大型基础性互联网络,其服务范围的大幅扩展对底层技术提出了诸多挑战,尤其是作为物理层关键技术之一的正交频分复用(OrthogonalFrequencyDivisionMultiplexing,OFDM)。近来,深度学习因......
  • 基于DNN深度学习网络的OFDM信号检测算法的仿真,对比LS和MMSE
    1.算法描述随着无线通信的快速发展,5G正逐渐成长为支撑全社会各行业运作的大型基础性互联网络,其服务范围的大幅扩展对底层技术提出了诸多挑战,尤其是作为物理层关键技术之一的正交频分复用(OrthogonalFrequencyDivisionMultiplexing,OFDM)。近来,深度学习因其在计算机视觉以及......
  • ABB DSSR122 4899001-NK 执行各种各样的信号处理运营
    ABBDSSR1224899001-NK执行各种各样的信号处理运营数字信号处理(死后无子女。)的用途是数字处理例如通过计算机或更专门的数字信号处理器,执行各种各样的信号处理运营。这数字信号以这种方式处理的是一系列数字,它们表示样品的连续变量在时间、空间或频率等领域。在…里数字电子学......
  • PCA 和多元信号处理,应用于神经数据
    PCA和多元信号处理,应用于神经数据学习和应用“大神经数据”的前沿数据分析技术(理论和MATLAB/Python代码)课程英文名:PCA&multivariatesignalprocessing,appliedtoneuraldata此视频教程共4.56GB,中英双语字幕,画质清晰无水印,源码附件全课程地址:https://xueshu.fun/1467......
  • flask_day04:请求上下文分析 wtforms
    目录回顾请求上下文分析(源码:request原理)导出项目的依赖pipreqs函数和方法threading.local对象本质原理:偏函数flask整个生命执行流程(1.1.4版本为例)wtforms(了解)补充回顾1.蓝图 第一步:导入第二步:实例化的得到的对象,可以指定static和templates第三步:app中注册蓝图,注册......