Менее конфликтный диспетчер сеансов для Zope 2

Документация Zope2 Sessioning: «Конфликтные ошибки будут автоматически повторяться Zope, и конечный пользователь никогда не должен их видеть».

Однако, хотя я думаю, что у меня есть наилучшие настройки для развертывания с высоким трафиком (временное хранилище для данных сеанса на ZEO, совместно используемое четырьмя клиентами, экземпляры zope с одинаковой настройкой), конечный пользователь все равно получает ошибки Database ConflictErrors.

При поиске в списках рассылки оказалось, что это обычная проблема для реализации данных сеанса в Zope на основе OOBTree. Некоторые предлагают использовать repoze.session, но он не поддерживается с 2009 года.

Есть ли другой подход для исправления ошибок конфликта BTree / TransientObject? Нужно ли менять настройки по умолчанию для session_data (значение времени ожидания объекта данных, разрешение времени ожидания, максимальное количество подобъектов)?


person Mihnea Simian    schedule 17.04.2012    source источник


Ответы (1)


Я думаю, что лучше всего вместо этого переключить реализацию сеанса на использование Beaker через Products.BeakerSessionDataManager. Это замена диспетчера сеансов Zope2 по умолчанию, но он работает намного лучше при высокой нагрузке и, конечно же, не будет страдать от ConflictErrors.

person Martijn Pieters    schedule 17.04.2012
comment
Еще одно отличное предложение, спасибо, Мартейн, я попробую! - person Mihnea Simian; 19.04.2012
comment
Поскольку срок действия вашей ссылки истек, я должен спросить, актуальна ли эта информация? - person artemis_clyde; 16.06.2016
comment
@artemis_clyde а, нет. Я обновлю сегодня позже, но продукт все еще есть в PyPI: pypi.python.org/pypi /Products.BeakerSessionDataManager - person Martijn Pieters; 16.06.2016
comment
@artemis_clyde: и да, насколько я могу судить, это все еще актуально. - person Martijn Pieters; 16.06.2016