Buscar..


Observaciones

Frasco soporta señales utilizando Blinker . El soporte de señal es opcional; solo se habilitarán si Blinker está instalado.

pip install blinker

http://flask.pocoo.org/docs/dev/signals/


Las señales no son asíncronas. Cuando se envía una señal, ejecuta de forma secuencial cada una de las funciones conectadas.

Conectando a señales

Utilice una señal de connect método para conectar una función a una señal. Cuando se envía una señal, cada función conectada se llama con el remitente y los argumentos con nombre que proporciona la señal.

from flask import template_rendered

def log_template(sender, template, context, **kwargs):
    sender.logger.info(
        'Rendered template %(template)r with context %(context)r.',
        template=template, context=context
    )

template_rendered.connect(log_template)

Consulte la documentación sobre señales incorporadas para obtener información sobre los argumentos que proporcionan. Un patrón útil es agregar un **kwargs argumento **kwargs para capturar cualquier argumento inesperado.

Señales personalizadas

Si desea crear y enviar señales en su propio código (por ejemplo, si está escribiendo una extensión), cree una nueva instancia de Signal y send llamada cuando se deba notificar a los suscriptores. Las señales se crean utilizando un Namespace .

from flask import current_app
from flask.signals import Namespace

namespace = Namespace()
message_sent = namespace.signal('mail_sent')

def message_response(recipient, body):
    ...
    message_sent.send(
        current_app._get_current_object(),
        recipient=recipient,
        body=body
    )

@message_sent.connect
def log_message(app, recipient, body):
    ...

Prefiere usar el soporte de señal de Flask en lugar de usar Blinker directamente. Envuelve la biblioteca para que las señales sigan siendo opcionales si los desarrolladores que usan su extensión no han optado por instalar Blinker.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow