flask-----信号

这篇具有很好参考价值的文章主要介绍了flask-----信号。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装:

flask中的信号使用的是一个第三方插件,叫做blinker。通过pip list看一下,如果没有安装,通过以下命令即可安装blinker

pip install blinker

flask其中有内置的信号

template_rendered = _signals.signal('template-rendered')#模板渲染完成的信号
before_render_template = _signals.signal('before-render-template') #模板渲染前的信号
request_started = _signals.signal('request-started') #模板开始渲染
request_finished = _signals.signal('request-finished') #模板渲染完成
request_tearing_down = _signals.signal('request-tearing-down') #request对象被销毁的信号
got_request_exception = _signals.signal('got-request-exception') #视图函数发生异常的信号
appcontext_tearing_down = _signals.signal('appcontext-tearing-down') #app上下文被摧毁的信号
appcontext_pushed = _signals.signal('appcontext-pushed')#app上下文被推入栈上的信号
appcontext_popped = _signals.signal('appcontext-popped')#app上下文被推出栈上的信号
message_flashed = _signals.signal('message-flashed')#flask的flush方法的信号

例子:     

1.flask.template_rendered:模版渲染完毕后发送,示例如下:

    from flask import template_rendered      #定义函数写在__init__中
    def log_template_renders(sender,template,context,*args):    #定义函数
        print( 'sender:',sender)
        print ('template:',template)
        print ('context:',context)
 
    template_rendered.connect(log_template_renders,app)    #绑定函数

2.flask.request_started:请求开始之前,在到达视图函数之前发送,订阅者可以调用request之类的标准全局代理访问请求。示例如下:

    def log_request_started(sender,**extra):
        print('sender:',sender)
        print('extra:',extra)
    request_started.connect(log_request_started,app)

3.flask.request_finished:请求结束时,在响应发送给客户端之前发送,可以传递response,示例代码如下:

    def log_request_finished(sender,response,*args):
        print( 'response:',response)
    request_finished.connect(log_request_finished,app)

自定义信号

分为三步:1.创建信号  2.监听信号  3.发送信号

定义信号:定义信号需要使用到blinker这个包的Namespace类来创建一个命名空间。比如定义一个在访问了某个视图函数的时候的信号。示例代码如下:

#1.定义信号
Myspace = Namespace()
fire_signal = Myspace.signal('fire') #fire为信号名称

监听信号:监听信号使用singal对象的connect方法,在这个方法中需要传递一个函数,用来接收以后监听到这个信号该做的事情。示例代码如下:

def fire_bullet(sender,username):
    print('开始射击')
    print(username)
 
fire_signal.connect(fire_bullet)

发送信号:发送信号使用singal对象的send方法,这个方法可以传递一些其他参数过去。示例代码如下:文章来源地址https://www.toymoban.com/news/detail-634772.html

#3.发送信号
fire_signal.send(username='xxxxxx')
#encoding:utf-8
# __author__ = 'donghao'
# __time__ = 2019/1/3 19:22
from blinker import Namespace
 
#Namespace命名空间
 
#1.定义信号
Myspace = Namespace()
fire_signal = Myspace.signal('fire') #fire为信号名称
 
# 2.监听信号
# fire_bullet 接受参数:发送者sender
def fire_bullet(sender,username):
    print(sender)
    print('开始射击')
    print(username)
 
 
fire_signal.connect(fire_bullet)
 
#3.发送信号
fire_signal.send('xxx',username='donghao')
 

到了这里,关于flask-----信号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flask-----信号

    安装: flask 中的信号使用的是一个第三方插件,叫做 blinker 。通过 pip list 看一下,如果没有安装,通过以下命令即可安装 blinker : 例子:      1.flask.template_rendered :模版渲染完毕后发送,示例如下: 2. flask.request_started :请求开始之前,在到达视图函数之前发送,订阅者可

    2024年02月14日
    浏览(25)
  • 后端框架flask学习小记

    最近在和几个伙伴尝试搭建一个新闻推荐系统, 算是一个推荐算法的实战项目, 里面涉及到了前后端交互, 该项目里面,使用了Flask作为后台框架, 为了理清楚整个系统的交互,所以就快速参考着资料学习了下flask, 主要还是参考伙伴们写的flask简介和基础的内容, 加上了

    2023年04月27日
    浏览(42)
  • flask----内置信号的使用/django的信号/ flask-script/sqlalchemy介绍和快速使用/sqlalchemy介绍和快速使用

    内置信号的使用 有哪些内置信号 自定义信号 # 1 第一步:定义一个自定义 信号 # 2 第二步:写个函数 # 3 第三步:函数跟自己定义信号绑定 # 4 第四步:触发自定义信号---》我们做   信号的作用(信号量--》Semaphore) 信号量 sqlalchemy的原生操作

    2024年02月14日
    浏览(38)
  • 搭建flask后端和微信小程序前端

    目录 一、准备工作 (1)我的前端代码 (2)我的后端代码 (3)后端运行成功的截图 (4)前端运行成功的截图  (5)整体运行成功的截图 二、部署后端  (1)在腾讯云的学生入口处购买服务器(建议选择ubuntu系统),设置管理秘钥,方便在本地远程连接。 (2)在本地的

    2024年02月04日
    浏览(52)
  • Flask后端开发(一)-基础知识和前期准备

    目录 1.背景介绍 1.1. 项目背景 1.2. 项目难点 1.3. 项目环境 2. flask后端开发实现的功能 3. flask部署和前后端对接 3.1. flask运行配置和服务器部署 3.2. flask前后端传参 4. 后端测试工具 4.1. 工具介绍 4.2. 工具使用 后记 就是前几个月临时接手了一个后端项目,使用python flask框架进行后

    2024年02月08日
    浏览(49)
  • flask后端进行yolov5检测模型的部署(填坑)

    麻痹的搞了我一整天,蛋疼 本来想把检测模型或者rtsp实时流部署到后端。网上有人推荐一个github项目 https://github.com/muhk01/Yolov5-on-Flask 后来有人把这个项目给修改了,运行起来了,我也准备运行一下 https://github.com/xugaoxiang/yolov5-flask   先把代码拉下来直接配置: 先说说修改的

    2023年04月09日
    浏览(61)
  • 后端flask,前端vue,实现post请求chatgpt流式响应

    vue2写法 vue3 setup写法

    2024年01月21日
    浏览(41)
  • Flask框架小程序后端分离开发学习笔记《1》网络知识

    Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。 协议:http,https (https是加密的http) 主机:g.cn zhihu.com之类的网址 端口:HTTP协议默认是80,因此一般不用填写 路径下面的「/question/31838184」是路径 http://www.zhihu.com/question/31838184 http://www.zhihu.com:80/ 电脑通

    2024年01月17日
    浏览(50)
  • Flask框架【before_first_request和before_request详解、钩子函数、Flask_信号机制】(七)

    👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥如果感觉博主的文章还不错的

    2024年02月07日
    浏览(44)
  • antdesignpro组件Upload传excel文件到后端flask的两种方案

    (特别提醒:后端xlrd新版本不支持xlsx文件,所以暂用xls文件进行上传) 1.第一种方案:组件接收到excel文件,然后解析成list数据,解析是要用到XLSX( ),发送给后端flask 代码实现关键部分: 前端实现部分,注意是在组件的属性 beforeUpload和onChange任意一个里面实现都可以,看

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包