信号和自定义信号

Posted chanyuli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号和自定义信号相关的知识,希望对你有一定的参考价值。

信号

信号就相当于是埋点,在执行到send这个方法的时候,就会执行信号中注册的函数。

一共有两个原生的信号:request_started 和 request_finished。

信号和请求扩展的区别再去,请求扩展是在响应函数前执行的函数,信号是在请求扩展之前执行的函数。从源码中可以看出来。

from flask import Flask,signals

app = Flask(__name__)

# 往信号中注册函数
def func(*args,**kwargs):
    print('触发型号',args,kwargs)

signals.request_started.connect(func)

# 触发信号: signals.request_started.send()
@app.before_first_request
def before_first1(*args,**kwargs):
    pass
@app.before_first_request
def before_first2(*args,**kwargs):
    pass

@app.before_request
def before_first3(*args,**kwargs):
    pass

@app.route('/',methods=['GET',"POST"])
def index():
    print('视图')
    return "ok"


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

自定义信号

from flask import Flask,signals
from flask.signals import _signals

app = Flask(import_name=__name__)

# 自定义信号
xxxxx = _signals.signal('xxxxx')


def func1(*args,**kwargs):
    # print(sb,k)
    print("我是信号")
def func(*args,**kwargs):
    print('触发型号',args,kwargs)

# 自定义信号中注册函数
xxxxx.connect(func)
# 往信号中注册函数


signals.request_started.connect(func)


@app.route("/x")
def index():
    # 触发信号
    _signals.signal("request-started").send(app)
    xxxxx.send("sb",k=123)
    return 'Index'




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

以上是关于信号和自定义信号的主要内容,如果未能解决你的问题,请参考以下文章

User模型扩展和自定义

[TimLinux] Django 信号

信号去噪基于低通和自适应滤波LMS去噪matlab源码

数字信号处理相关函数 ( 能量信号 | 能量信号的互相关函数 | 能量信号的自相关函数 )

数字信号处理相关函数 ( 能量信号 | 能量信号的互相关函数 | 能量信号的自相关函数 )

带有复选框和自定义适配器的 ListView,片段无法正常工作