В Twisted Python - Убедитесь, что экземпляр протокола будет полностью освобожден
-
22-07-2019 - |
Вопрос
У меня есть довольно мощный сервер сокетов чата, написанный на Twisted Python, я запускаю его через Интернет.TCPServer с фабрикой, и эта фабрика ссылается на объект протокола, который обрабатывает все коммуникации с клиентом.
Как я должен убедиться, что экземпляр протокола полностью уничтожает сам себя после отключения клиента?
У меня есть функция с именем connectionLost, которая запускается, как только клиент отключается, и я пытаюсь остановить всю активность прямо там, но я подозреваю, что некоторые элементы reactor (например, экземпляры twisted.words) продолжают выполняться для устаревших экземпляров протокола.
Каков был бы наилучший подход к решению этой проблемы?
Спасибо!
Решение
хорошо, для решения этой проблемы я установил __del__
метод в классе protocol, и теперь я регистрирую экземпляры протокола, которые не были собраны мусором в течение 1 минуты с момента отключения клиента.
Если у кого-нибудь есть решение получше, я все равно буду рад услышать об этом, но пока я уже исправил несколько потенциальных утечек памяти, используя этот журнал.
Спасибо!