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

      什么是信号?信号可以帮助我们消除flask核心框架或者扩展应用之间的耦合,通过某个动作发生时发出通知消息来实现这个机制.简言之,信号允许特定的发送者在某事件发生时,发送通知消息给订阅者.
      flask有一系列的信号和扩展来实现信号机制.请记住信号是发送给订阅者的,订阅者无权修改数据.你会发现某些信号的功能和内置的渲染器很类似(例如:request_started类似于before_request()).但是她们的工作机理又有所不同.before_request()按照特定的顺序来处理,并且可以在不产生响应的情况下退出.
    信号的最大的益处就是你可以分片段的来订阅,这种分段的订阅机制对单元测试来说非常有用.

      订阅信号
      可以用connect()方法来订阅一个信号,第一个参数为回调函数,第二个可选参数为发送者.disconnect()方法解除订阅.

      对于所有的flask信号,sender就是发送信号的应用。当你订阅一个信号的时候,务必填充sender,除非你想接收所有应用的消息。

      下面是一个例子,这个例子可以指出单元测试中所渲染的模板,并且能给出传递到模板上的变量。

    from flask import template_rendered
    from contextlib import contextmanager
    
    @contextmanager
    def captured_templates(app):
        recorded = []
        def record(sender, template, context, **extra):
            recorded.append((template, context))
        template_rendered.connect(record, app)
        try:
            yield recorded
        finally:
            template_rendered.disconnect(record, app)

      如上,connect方法将record和app关联起来,record为回调函数,app作为发送者。

  • 相关阅读:
    换个角度认识大数据(上)——何为元数据
    如何优雅地停止Spark Streaming Job
    split("\,")引起的java.lang.ArrayIndexOutOfBoundsException异常解决方案
    spark streaming整合kafka
    Kafka相关命令
    Hive性能调优(二)----数据倾斜
    Hive SQL编译过程(转)
    Hive性能调优(一)----文件存储格式及压缩方式选择
    Hive表的几种存储格式
    spring框架之javaconfig
  • 原文地址:https://www.cnblogs.com/bracken/p/2922891.html
Copyright © 2011-2022 走看看