Django Signals

Π‘ΠΈΠ³Π½Π°Π»Ρ‹ β€” ΠΎΡ‡Π΅Π½ΡŒ похоТая рСализация ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Pub-Sub Π² Django для общСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния.

Π’ Django Π΅ΡΡ‚ΡŒ встроСнныС сигналы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ…-Π½ΠΈΠ±ΡƒΠ΄ΡŒ настроСк), Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои сигналы

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ встроСнного сигнала:

from django.core.signals import setting_changed

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания своСго сигнала:

from django.dispatch import Signal

my_signal = Signal()

ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° сигнал (ΡΡ‚Π°Ρ‚ΡŒ receiver'ΠΎΠΌ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Django):

from django.core.signals import setting_changed
def my_callback(sender, **kwargs):
    print("Request finished!")

setting_changed.connect(my_callback)

ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ receiver():

from django.core.signals import setting_changed
from django.dispatch import receiver


@receiver(setting_changed)
def my_callback(sender, **kwargs):
    print("Setting changed!")

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сигнал:

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° событиС сохранСния нашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ Django:

Last updated