python - Django 信号卡在循环中

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

# models.py
class Item(models.Model):
    ...
    foo = models.BooleanField(
        default=False,
        editable=True,
        blank=True,
        help_text='Blah Blah...'    
    )
# signals.py
@receiver(pre_save, sender=Item)
def foobar(sender, instance, **kwargs):
    try:
        pass
    except:
        pass

我真的把 pass 放在每个 tryexcept 中,并调用日志只是为了看看它是否重复,即使没有代码他们,它是。不断没有尽头。这也发生在 if/else 语句中,而不是 try/except

到底怎样才能阻止信号陷入循环?它应该每次都发送一封电子邮件,但现在当对象更新时,用户会收到无穷无尽的电子邮件,直到我重新启动 Django。

我真的很茫然...

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

编辑:

如果您以后要查看此内容,这就是我调试问题的方式。

寻找任何正在运行/攻击您的服务器并可能引发信号运行的东西。对我来说,这是一个特定的对象,它被设置为信号运行的 sender,每次我使用的 webhook 都会导致一个函数运行,它正在修改特定的 发件人对象

最佳答案

所以我犹豫要不要将此作为“答案”发布,因为这可能只会为我自己的问题提供理由,但我已经弄清楚发生了什么......

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

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

# 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:
    ...

...

https://stackoverflow.com/questions/63242733/

相关文章:

reactjs - react : Fix missing dependency warning u

javascript - Firebase 和 VueJS : Uncaught (in promi

laravel - 如何在 Laravel 中显示带有法语符号的验证消息?

java - 使用 Spring WebClient 重复过滤响应

reactjs - 在 Jest 中测试 Axios

android - 使用 Jetpack Navigation 在深度链接 URI 中使用字符串常量

java - JAVA RMI 还在任何地方使用吗?

html - 网络套件 : FreeMarker/BFO Images Cutting Off at

python - Keras - 数据集的数据生成器太大而无法放入内存

javascript - Cypress 在使用 cy.visit() 时注销