Django文档在这个问题上有如下说明:
需要注意的是,Django默认将信号处理函数存储为弱引用,因此如果您的处理函数是一个本地函数,它可能会被垃圾回收。为了防止这种情况发生,请在调用信号的connect()方法时传递weak=False参数。
我没有找到任何关于为什么默认使用弱引用的正当理由,我也不理解为什么您会希望明确注册的信号会隐式消失。那么这里弱引用的用例是什么?为什么它是默认值?
我意识到在99%的情况下这可能并不重要,但显然我还有些不理解的地方,我想知道是否有什么“陷阱”潜伏着,可能会在将来折磨我。
Signal
实例上调用disconnect
方法,并将处理程序作为参数传递。但是你所说的“删除”信号处理程序是什么意思? - Jason C