Я пытаюсь использовать сигналы для запуска метода экземпляра класса. Та же самая установка, что и у меня, уже работает с простой функцией вместо метода экземпляра, поэтому мой вопрос касается только использования сигналов с классами.
В методе ready
конфигурации моего приложения я делаю следующее
class ConsoleConfig(AppConfig):
name = 'console'
def ready(self):
from .test import testClass
from .signals import my_signal
test = testClass('first test')
mysignal.connect(test.handle_signal)
в signals.py
Я определяю свой сигнал следующим образом:
mysignal = Signal()
И я запускаю сигнал от функции save () одной из моделей:
...
from console.signals import mysignal
...
class BitmexTrade(models.Model):
def save(self, *args, **kwargs):
...
if condition:
mysignal.send(sender='test')
super().save(*args, **kwargs)
И самая важная часть - это класс и функция приемника:
class testClass(object):
def __init__(self, name):
self.name = name
def handle_signal(self, *args, **kwargs):
print('test')
Когда я обмениваю метод экземпляра с функцией, он работает. Так я определил другую функцию. def handle_signal (sender, ** kwargs): print ('signal Receiver')
Я пробовал использовать send_robust вместо send, но никаких исключений не было.