В Twisted Python - Убедитесь, что экземпляр протокола будет полностью освобожден

StackOverflow https://stackoverflow.com/questions/1234292

Вопрос

У меня есть довольно мощный сервер сокетов чата, написанный на Twisted Python, я запускаю его через Интернет.TCPServer с фабрикой, и эта фабрика ссылается на объект протокола, который обрабатывает все коммуникации с клиентом.

Как я должен убедиться, что экземпляр протокола полностью уничтожает сам себя после отключения клиента?

У меня есть функция с именем connectionLost, которая запускается, как только клиент отключается, и я пытаюсь остановить всю активность прямо там, но я подозреваю, что некоторые элементы reactor (например, экземпляры twisted.words) продолжают выполняться для устаревших экземпляров протокола.

Каков был бы наилучший подход к решению этой проблемы?

Спасибо!

Это было полезно?

Решение

хорошо, для решения этой проблемы я установил __del__ метод в классе protocol, и теперь я регистрирую экземпляры протокола, которые не были собраны мусором в течение 1 минуты с момента отключения клиента.

Если у кого-нибудь есть решение получше, я все равно буду рад услышать об этом, но пока я уже исправил несколько потенциальных утечек памяти, используя этот журнал.

Спасибо!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top