繁体   English   中英

Django信号发送两次

[英]Django signals sending twice

我正在基于Actstream justquick / django-activity-stream /创建一个简单的Django信誉应用程序,该应用程序创建了一个信号用作: rep.send(request.user, action='increase', target=obj, val=10)

但是,即使使用调度UID:

# apps.py
from django.apps import AppConfig
from . signals import rep
from . receivers import rep_handler

class DjangoReputationConfig(AppConfig):
    name = 'django_rep'

    def ready(self):
        rep.connect(rep_handler, dispatch_uid='django_rep.models')`

我是从Actstream / apps.py复制的,我无法让信号只发送一次。 我尝试了其他独特的字符串,似乎没有什么不同。

在我的__init__.py中有: default_app_config = 'django_rep.apps.DjangoReputationConfig'

谢谢! 如果您想查看代码,请在此处查看仓库!

我有完全一样的问题。 我尝试了很多事情,但是最后我不得不诉诸使用环境变量,如下所示:

import os
from django.apps import AppConfig

class MyConfig(AppConfig):
    name = "xyz"

    def ready(self):
        if not os.environ.get("ready_called"): 
            # The development server instantiates MyConfig twice; running via gunicorn only once.
            os.environ["ready_called"] = "1" # Use this environment semaphore to prevent starting backgroundtaks more than once.
            import backgroundtasks
            backgroundtasks.install()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM