我有 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
放在每个 try
和 except
中,并调用日志只是为了看看它是否重复,即使没有代码他们,它是。不断没有尽头。这也发生在 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 重复过滤响应
android - 使用 Jetpack Navigation 在深度链接 URI 中使用字符串常量
html - 网络套件 : FreeMarker/BFO Images Cutting Off at