Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django信号卡在环路中_Python_Django_Signals - Fatal编程技术网

Python Django信号卡在环路中

Python Django信号卡在环路中,python,django,signals,Python,Django,Signals,我有3个信号函数,其中一个在被调用时被卡在循环中。当模型类中的对象在Django管理页面上更新时,会调用它 # models.py class Item(models.Model): ... foo = models.BooleanField( default=False, editable=True, blank=True, help_text='Blah Blah...' ) 我逐字逐句地在每个

我有3个信号函数,其中一个在被调用时被卡在循环中。当模型类中的对象在Django管理页面上更新时,会调用它

# models.py
class Item(models.Model):
    ...
    foo = models.BooleanField(
        default=False,
        editable=True,
        blank=True,
        help_text='Blah Blah...'    
    )
我逐字逐句地在每个
try
中放入
pass
,除了调用一个日志来查看它是否在重复,即使它们中没有代码,也是如此。不断地,没有尽头。这也使用
if/else
语句来实现,而不是
try/except

我怎么才能阻止信号卡在环路中?它应该每次发送一封电子邮件,但现在当对象更新时,用户会收到无数电子邮件,直到我重新启动Django

我在这里真是不知所措

顺便说一句,这不会发生在我的测试服务器上,只会发生在我的实时/临时服务器上

编辑

如果您将来看到这个,这就是我调试问题的方式


查找任何正在运行/命中服务器并可能触发
信号运行的内容。对我来说,它是一个特定的对象,被设置为运行信号的
发送者
,每次我使用的webhook都会导致一个函数运行,这个函数会修改特定的
发送者对象
,所以我犹豫是否将其作为“答案”发布,因为这可能只会给我自己的问题提供理由,但我已经弄明白了发生了什么

我最近将一个Webhook连接到我的Django应用程序,这个应用程序不断点击它并更新信息。。。我已经修复了webhook函数,只命中模型对象(上面,它是
类项
),这样可以减少信号运行的次数

但是,这是信号运行到完成的文字修复:

# signals.py
...

obj = sender.objects.get(pk=instance.pk)

# We are checking if the instance value is different than what the object value
# is. Remember, this is PRE_SAVE, so the object should be different than the
# instance
if instance.variable and not obj.variable:
    ...

...

你的意思是除了例外以外的
,对吗?因为每一个行动都会发生。我不明白你的邮件系统是如何工作的,但你不应该使用alone@LinhNguyen让我尴尬。我甚至没想到。那么,为了澄清一下,您是说except将在try中的每个操作之后运行?或者在尝试结束时运行?我认为这个答案比我解释的解释更好,我会在LinhNguyen检查一下,谢谢。不过,我必须提到,我的其他信号都是以相同的方式设置的,运行时没有问题。您尝试过在临时服务器上调试吗?只需将print添加到try-catch案例中,看看它是否大量打印,如果没有打印,那么发送电子邮件功能一定有问题
# signals.py
...

obj = sender.objects.get(pk=instance.pk)

# We are checking if the instance value is different than what the object value
# is. Remember, this is PRE_SAVE, so the object should be different than the
# instance
if instance.variable and not obj.variable:
    ...

...