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

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

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

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

Как лучше всего справиться с этим?

Спасибо!

1 Ответ

0 голосов
/ 06 августа 2009

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

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

Спасибо!

...