Метод disconnect
Метод disconnect применяется к объекту сигнала
NamedSignal и позволяет отключить функцию-получатель,
которая была ранее подключена к этому сигналу. Первым
параметром передаётся функция-получатель, которую нужно
отключить. Если функция не была подключена к сигналу,
метод просто ничего не делает.
Синтаксис
signal.disconnect(receiver)
Пример
Давайте создадим сигнал, подключим к нему функцию,
а затем отключим её с помощью метода disconnect:
from flask import Flask
from flask.signals import Namespace
app = Flask(__name__)
ns = Namespace()
my_signal = ns.signal('my-signal')
def handler(sender, **extra):
print('handler called')
my_signal.connect(handler)
my_signal.disconnect(handler)
my_signal.send(app)
Результат выполнения кода:
""
Так как функция была отключена, при отправке сигнала она не вызывается, и в консоль ничего не выводится.
Пример
Давайте подключим две функции к сигналу и отключим только одну из них:
from flask import Flask
from flask.signals import Namespace
app = Flask(__name__)
ns = Namespace()
my_signal = ns.signal('my-signal')
def handler1(sender, **extra):
print('handler1')
def handler2(sender, **extra):
print('handler2')
my_signal.connect(handler1)
my_signal.connect(handler2)
my_signal.disconnect(handler1)
my_signal.send(app)
Результат выполнения кода:
"handler2"
Функция handler1 была отключена и не вызывается,
а функция handler2 продолжает работать.
Смотрите также
-
метод
connect,
который подключает функцию к сигналу -
метод
send,
который отправляет сигнал всем получателям -
метод
has_receivers_for,
который проверяет наличие получателей у сигнала -
класс
NamedSignal,
который представляет именованный сигнал