Думаю, здесь та же проблема, что и при обсуждении темы "Оптимизация
ZODB".
Особенность Zope, а именно ZODB, в том, что данный инструмент крайне
тяжело работает с "емким" контентом. Под словом "емкий" я имею в виду
характеристики objectValues() соответствующего объекта-контейнера.
Если ваш код в процессе загрузки формы (страницы) предполагает какие-
либо операции с атрибутом "_objects" и тем более с "телом
контента" (даже опосредованно, например, через ObjectManager, прим:
тут мы предполагаем, что наш контейнер от него наследуется), т.е. с
дочками - экземплярами объектов внутри контейнера, то загрузка данного
контейнера (отработка метода Persistent.__setstate__) будет
предполагать загрузку в кэш соединения всего контента целиком,
конечно, если его там на данный момент еще нет. Соответственно, если
объект большой (емкий), то неизбежно будет задержка. Вторичный рефреш
при этом может выполняться уже быстрей. Точно также обстоит дело и в
фазе _commit.
"Емкий" контент для ZODB - это несколько сотен объектов внутри, очень
емкий контент - 1000 объектов, ну а, если 10000, то тут вам
потребуется достаточно серъезные ресурсы (например, 4 DualCore CPU 3.0
HGz, 16-32GB RAM, хорошая ОС, при этом Windows будет работать хуже
любой Posix).
Рекомендации - не в наращивании оборудования, а в проектировании
приложения, исходя из данных "особенностей" нашего замечательного
инструмента. Несмотря ни на что, Zope все же может быть замечательным
инструментом, правда, не в единственном лице, а комбинации с SQL (или
иными инструментами) и при соответствующих подходах к проектированию.
Увы, Zope - система сложная, я бы сказал, даже очень сложная.
А python, работая под "управлением" Zope, всегда будет съедать CPU и
ОП, и не то что на 50, а на все 100%.
--~--~---------~--~----~------------~-------~--~----~
Russian Plone Group
http://plone.org.ru/Для отправки сообщений
[hidden email]
Новые участники контролируются
Архив и настройки подписки
http://groups.google.com/group/plone-ru-~----------~----~----~----~------~----~------~--~---