在Twisted Python中 - 确保协议实例被完全释放
我有一个用Twisted Python写的聊天socket服务器,这个服务器的启动是通过internet.TCPServer和一个工厂来实现的,而这个工厂又指向一个协议对象,负责处理与客户端的所有通信。
我该如何确保当客户端断开连接后,协议实例能够完全自我销毁呢?
我有一个叫做connectionLost的函数,它会在客户端断开连接时被触发,我试图在这里停止所有活动,但我怀疑一些反应器的东西(比如twisted.words的实例)可能还在运行,导致过时的协议实例没有被清理。
处理这个问题的最佳方法是什么呢?
谢谢!
1 个回答
0
好的,为了解决这个问题,我在协议类里设置了一个 __del__
方法,现在我正在记录那些在客户端断开连接后1分钟内还没有被垃圾回收的协议实例。
如果有人有更好的解决办法,我很乐意听听,但到目前为止,我已经通过这个日志修复了一些潜在的内存泄漏问题。
谢谢!