Найти - Пользователи
Полная версия: twisted spread проблемы на выходе
Начало » Network » twisted spread проблемы на выходе
1
PooH
После переноса проекта с twisted 8.1.0 на twisted 10.0.0 на закрытии программа начала выкидывать:
2010-05-25 17:32:56+0700 [-] Exception AttributeError: "'NoneType' object has no attribute 'deferr'" in <bound method Tank.__del__ of   <model.Tankinstance at 0x8fa094c>> ignored
2010-05-25 17:32:56+0700 [-] Exception AttributeError: "'NoneType' object has no attribute 'deferr'" in <bound method ClientOilProduct.__del__ of <model.ClientOilProduct instance at 0x8fa0a2c>> ignored
Эти объекты наследники pb.RemoteCache, у которого в методе __del__ вызывается метод, вызывающий удаленный метод сервера уменьшающий количество ссылок на серверный объект. Так вот в этом методе, для сериализации используется cStringIO, и в этот момент cStringIO равен None. Похоже к моменту вызова __del__ модуль уже выгружен из памяти. Подозреваю что все дело в лишних ссылках на эти объекты. Как вообще можно отследить ситуацию? Может инструменты какие есть?
PooH
Причину понял, twisted для RemoteCache подменяет возвращаемый объект на некий proxy. Но зачем он это делает? И как мне тогда сохранять на него ссылки?! Буду курить сырцы дальше…
PooH
Не понимаю я логику разработчиков twisted :(
В RemoteCache.unjellyFor объект десериализуется, потом дублируется и мне отдается копия. Зачем?
bw
А в предыдущих версиях иначе было? Я уж забыл как там кишки устроены.

..bw
PooH
bw
А в предыдущих версиях иначе было?
Да, это как раз в последнем комите для flavors.py в их svn.
Андрей Светлов
Видел что-то похожее, когда код завершения отсутствовал.
После того, как в Service правильно реализовали .stopService(), гася всю запущенную активность - проблема ушла.
Впрочем, это был не pb а “просто интернет”.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB