zoukankan      html  css  js  c++  java
  • flask 的信号

    flask的信号

    内置的信号
    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在其中添加数据时,自动触发
    

    flask信号的使用

    """
    想要使用flask的信号得先安装插件
    pip install blinker
    
    """
    
    from flask import Flask, signals # 信号
    
    app = Flask(__name__)
    
    # 触发信号要执行的函数
    def sig(*args, **kwargs):
        print('触发这个信号', args, kwargs)
    
    
    # 给你要连接的函数绑定信号的类型(这里就举一个例子)
    signals.request_started.connect(sig)
    
    
    @app.route('/')
    def index():
        return '123'
    
    if __name__ == '__main__':
        app.run()
    
    
    

    自定义信号

    from flask import Flask
    from flask.signals import _signals
    
    app = Flask(__name__)
    
    # 自定义信号
    xxxxx = _signals.signal('xxxxx')
    
    
    # 接收参数的时候,就算send方法不传,也要接收一个参数,后面按照关键字接收参数
    def func(arg, on1):
        print("123123", arg, on1)
    
    
    # 自定义信号中注册函数
    xxxxx.connect(func)
    
    
    @app.route("/x")
    def index():
        # 触发信号 #传参的时候,第一个必须是位置参数,后面的参数必须是关键字参数
        xxxxx.send("sb", on1="sb2")
        return 'Index'
    
    
    if __name__ == '__main__':
    
        app.run()
    
  • 相关阅读:
    线段树 by yyb
    【SYZOJ279】滑稽♂树(树套树)
    【BZOJ2806】Cheat(后缀自动机,二分答案,动态规划,单调队列)
    【BZOJ2733】永无乡(线段树,并查集)
    【BZOJ4991】我也不知道题目名字是什么(线段树)
    【BZOJ4999】This Problem Is Too Simple!(线段树)
    【BZOJ1858】序列操作(线段树)
    【BZOJ1835】基站选址(线段树)
    【BZOJ2962】序列操作(线段树)
    【BZOJ1558】等差数列(线段树)
  • 原文地址:https://www.cnblogs.com/yafeng666/p/12535786.html
Copyright © 2011-2022 走看看