Уведомления

Группа в Telegram: @pythonsu

#1 Май 25, 2010 13:45:36

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

twisted spread проблемы на выходе

После переноса проекта с 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__ модуль уже выгружен из памяти. Подозреваю что все дело в лишних ссылках на эти объекты. Как вообще можно отследить ситуацию? Может инструменты какие есть?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Май 25, 2010 13:48:15)

Офлайн

#2 Май 26, 2010 10:46:02

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

twisted spread проблемы на выходе

Причину понял, twisted для RemoteCache подменяет возвращаемый объект на некий proxy. Но зачем он это делает? И как мне тогда сохранять на него ссылки?! Буду курить сырцы дальше…



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Май 26, 2010 11:40:00

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

twisted spread проблемы на выходе

Не понимаю я логику разработчиков twisted :(
В RemoteCache.unjellyFor объект десериализуется, потом дублируется и мне отдается копия. Зачем?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Май 26, 2010 12:18:10

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

twisted spread проблемы на выходе

А в предыдущих версиях иначе было? Я уж забыл как там кишки устроены.

..bw



Офлайн

#5 Май 26, 2010 13:38:14

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

twisted spread проблемы на выходе

bw
А в предыдущих версиях иначе было?
Да, это как раз в последнем комите для flavors.py в их svn.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Май 26, 2010 15:05:05

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

twisted spread проблемы на выходе

Видел что-то похожее, когда код завершения отсутствовал.
После того, как в Service правильно реализовали .stopService(), гася всю запущенную активность - проблема ушла.
Впрочем, это был не pb а “просто интернет”.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version