Сигнал, подключенный к модели библиотеки стороннего производителя, не срабатывает
У меня есть пример, в котором у меня есть модель с именем "Content" , которая наследуется от сторонней библиотеки , которую я установил как пакет pip, известный как "django-mptt" как показано ниже.
content_viewer/models.py
class Content(MPTTModel):
content_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
content_name = models.CharField(max_length=250)
Я также использую кэш redis для cacheops и добавил следующие конфигурации в settings.py.
dashboard/settings.py
CACHEOPS_REDIS = {
"host": REDIS_HOST,
"port": REDIS_PORT,
"db": 1,
"socket_timeout": 3,
}
CACHEOPS = {
"content_viewer.*": {"ops": {"fetch", "get"}, "timeout": 60 * 60},
}
Примечание:- content_viewer - это имя app
Требование: Здесь мне нужен сигнал post_save на классе MPTTModel, который должен invalidate/clear redis cache для объекта, который был создан/сохранен
Я создал signal в моем signals.py файле, как показано ниже.
content_viewer/signals.py
@receiver(post_save, sender=Content)
def clear_redis_cache_for_mptt_instance(sender, instance, **kwargs):
invalidate_obj(instance)
и я импортировал сигналы в файл apps.py, как показано ниже.
content_viewer/apps.py
class WorkspaceDisplayConfig(AppConfig):
name = "content_viewer"
def ready(self):
import content_viewer.signals
Но когда я запускаю код в режиме отладки, сигнал, похоже, никогда не срабатывает всякий раз, когда я создаю экземпляр объекта Content.
Кто-нибудь может сказать мне, что я делаю неправильно?