Метод has_receivers_for
Метод has_receivers_for применяется к объекту сигнала
NamedSignal и проверяет, подписан ли на этот сигнал
хотя бы один получатель. Первым параметром передаётся объект-отправитель,
для которого нужно выполнить проверку. Метод возвращает
True, если хотя бы один получатель может принять сигнал
от указанного отправителя, и False в противном случае.
В отличие от метода receivers_for, который возвращает
итератор со всеми получателями, метод has_receivers_for
лишь сообщает, есть ли такие получатели вообще. Это удобно для
быстрой проверки перед отправкой сигнала.
Синтаксис
signal.has_receivers_for(sender)
Пример
Давайте создадим сигнал и проверим, есть ли у него получатели до подключения функции:
from flask import Flask
from flask.signals import Namespace
app = Flask(__name__)
ns = Namespace()
my_signal = ns.signal('my-signal')
res = my_signal.has_receivers_for(app)
print(res)
Результат выполнения кода:
False
Пример
Теперь подключим получатель к сигналу и снова выполним проверку:
from flask import Flask
from flask.signals import Namespace
app = Flask(__name__)
ns = Namespace()
my_signal = ns.signal('my-signal')
def handler(sender):
pass
my_signal.connect(handler, app)
res = my_signal.has_receivers_for(app)
print(res)
Результат выполнения кода:
True
Пример
Давайте проверим, что метод возвращает False
для другого отправителя, к которому получатель не привязан:
from flask import Flask
from flask.signals import Namespace
app = Flask(__name__)
other = Flask('other')
ns = Namespace()
my_signal = ns.signal('my-signal')
def handler(sender):
pass
my_signal.connect(handler, app)
res = my_signal.has_receivers_for(other)
print(res)
Результат выполнения кода:
False
Смотрите также
-
класс
NamedSignal,
который представляет именованный сигнал -
метод
receivers_for,
который возвращает всех получателей сигнала -
метод
connect,
который подключает получателя к сигналу -
метод
disconnect,
который отключает получателя от сигнала