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

    flask-信号

     

    Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为。

    1
    pip3 install blinker

    1. 内置信号

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    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在其中添加数据时,自动触发

    源码示例

     request_started
     request_finished
     before_render_template
     template_rendered
     got_request_exception
     request_tearing_down
     appcontext_tearing_down
     appcontext_tearing_down
     appcontext_pushed
     appcontext_popped
     message_flashed

    2. 自定义信号

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    from flaskimport Flask, current_app, flash, render_template
    from flask.signalsimport _signals
     
    app= Flask(import_name=__name__)
     
     
    # 自定义信号
    xxxxx= _signals.signal('xxxxx')
     
     
    def func(sender,*args,**kwargs):
        print(sender)
     
    # 自定义信号中注册函数
    xxxxx.connect(func)
     
     
    @app.route("/x")
    def index():
        # 触发信号
        xxxxx.send('123123', k1='v1')
        return 'Index'
     
     
    if __name__== '__main__':
        app.run()
  • 相关阅读:
    如何使用Linux命令实时查看最新的日志信息
    什么是缺陷(bug)
    APP 崩溃测试点小结
    软件测试之权限测试
    web安全测试之 xss攻击
    URL详谈
    随机生成名字或短句代码机
    JAVA环境变量配置
    Properties类与读取properties文件
    JAVA 打印九九乘法表
  • 原文地址:https://www.cnblogs.com/xiangwang1/p/15071617.html
Copyright © 2011-2022 走看看