Я работаю над сервером websocket и пытаюсь использовать python twisted + autobahn, но я считаю, что у меня утечка памяти. Фактически мне удалось воспроизвести его с помощью эхо-кода на https://github.com/crossbario/autobahn-python/tree/master/examples/twisted/websocket/echo
Симптом, который я вижу, заключается в том, что на стороне сервера экземпляры протокола никогда не освобождаются после закрытия соединения.
Я пробовал исследовать это разными способами - самый простой - добавить печать в методе дель, более сложный - изучить с помощью pdb и gc. И да - наблюдение за использованием памяти в процессе, который неуклонно растет по мере того, как соединения устанавливаются и замыкаются снова и снова.
Я ожидаю, что произойдет следующее: после завершения onClose экземпляр протокола должен исчезнуть навсегда. На самом деле у меня есть другие реализации сервера, основанные на twisted (но без веб-сокетов автобана), и я подтвердил, как это работает (хотя вместо этого я использую connectionLost).
Кто-нибудь знает, что происходит?
Почему я не подумал об этом! Чертовски хороший момент ...






Если у вас возникла проблема с autobahn-python на их чистом демонстрационном коде, вам следует отправить отчет об ошибке.