Метод send класса NamedSignal
Метод send применяется к объекту сигнала
NamedSignal и вызывает всех получателей,
подключённых к этому сигналу. Первым параметром
передаётся отправитель сигнала (обычно это приложение
или объект, инициировавший событие). Все остальные
позиционные и именованные аргументы передаются
получателям без изменений. Метод возвращает список,
содержащий результаты, возвращённые каждым получателем.
Если хотя бы один получатель выбросит исключение,
метод send прервёт выполнение и пробросит
это исключение дальше. Для устойчивой отправки,
при которой ошибки получателей подавляются,
используется метод send_robust.
Синтаксис
signal.send(sender, *args, **kwargs)
Пример
Давайте создадим сигнал, подключим к нему получателя
и отправим сигнал с помощью метода send:
from flask import Flask
from flask.signals import Namespace
app = Flask(__name__)
namespace = Namespace()
my_signal = namespace.signal('my-signal')
@my_signal.connect
def handler(sender, **extra):
print('Signal received from', sender)
return 'ok'
res = my_signal.send(app, data='abcde')
print(res)
Результат выполнения кода:
Signal received from <Flask 'app'>
['ok']
Пример
Давайте подключим двух получателей и посмотрим,
как метод send собирает их результаты в список:
from flask import Flask
from flask.signals import Namespace
app = Flask(__name__)
namespace = Namespace()
my_signal = namespace.signal('my-signal')
@my_signal.connect
def handler_one(sender, **extra):
return 'first'
@my_signal.connect
def handler_two(sender, **extra):
return 'second'
res = my_signal.send(app)
print(res)
Результат выполнения кода:
['first', 'second']
Смотрите также
-
класс
NamedSignal,
который представляет именованный сигнал -
метод
send_robust,
который отправляет сигнал и подавляет ошибки получателей -
метод
connect,
который подключает получателя к сигналу -
метод
disconnect,
который отключает получателя от сигнала