django - 可以更改Django信号的顺序吗?

标签 django signals django-signals

我在用户注册时发送了2个信号,socialauth_registered和post_save。我希望socialauth_registered在post_save之前,因为它会影响post_save触发的功能。

这可能吗? (如果是,怎么办?!)

我不确定确切相关的内容,但是我知道:

from django.contrib.auth.models import User
from social_auth.signals import socialauth_registered, pre_update
from django.db.models.signals import post_save

<ALL OF MY MODELS>

def create_user_profile(sender, instance, created, **kwargs):
    do some stuff

def create_social_profile(sender, user, response, details, **kwargs):
    do other stuff

socialauth_registered.connect(create_social_profile, sender=None)
post_save.connect(create_user_profile, sender=User)

最佳答案

我不是很积极,但是我会怀疑。 Kinda更重要的是,信号背后的想法是它们应该是原子的。信号处理程序应响应该信号,而不关心其他信号。通常,依靠两个不相关信号的顺序(显然,您可以依靠pre_save和post_save的顺序)通常是不安全的。因此,即使我对您的问题没有一个明确的答案,我也会提供建议,您应该仔细考虑一下设计。

关于django - 可以更改Django信号的顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10017567/

相关文章:

django - TransactionManagementError 与 Django Celeryd/django-celery 与 sqlite 后端

Django manage.py 产生几个 fcgi 进程

django - 访问 AppConfig 成员

django - 在哪里放置 django 信号接收器代码,将它们分布在多个文件中?

python - Django-registration user_activated信号发送两次

django - 使用自定义 AdminSite 时我的应用程序不可见

c - 如何使用 posix 信号正确挂起多个线程?

c - 调用 SIGINT 时终止线程 - C

django - 如何使用通用函数处理多个模型发出的 Django 信号

python - Django Rest auth user_logged_in 信号