Есть ли у Plone ограничение на размер загружаемых данных

#plone #zope

#plone #zope

Вопрос:

Я разработал сайт Plone и использую надстройку csvreplicata для загрузки данных из файлов csv. Мне удалось загрузить файл примерно из 6000 строк, однако, когда я пытаюсь загрузить csv с примерно 120 000 строк, сайт plone зависает. Кто-нибудь знает, есть ли ограничение на размер загружаемых данных, пожалуйста?

Заранее спасибо

Ответ №1:

Глядя на код продукта, я не вижу ни одной точки сохранения транзакции, поэтому я думаю, что реальная проблема здесь в том, что вашему серверу не хватает памяти из-за огромного размера одной транзакции, и он зависает, потому что начинает меняться местами. Попробуйте отслеживать использование памяти вашего сервера и при необходимости добавлять этот код каждые N элементов, обработанных во время импорта:

 import transaction

...
transaction.savepoint(optimistic=True)
  

Это сделает «субтранзакцию» транзакции, перемещая данные из памяти на жесткий диск.

Обязательно выберите подходящее измерение N: для очень больших транзакций вы рискуете сэкономить память и исчерпать дисковое пространство, потому что каждая точка сохранения увеличивает размер данных на жестком диске.

Дополнительная информация: http://docs.zope.org/zope3/Book/zodb/savepoints/show.html

Комментарии:

1. Не могли бы вы указать, куда мне следует добавить код, поскольку я новичок в python. Я попытался добавить его в def _csvimport внутри инструкции try непосредственно перед исключениями, но после перезапуска Zope сайт Plone не запустился.

2. Итак, вы следили за своим сервером, и у него закончилась память ?! Если это так, я бы разместил импорт в начале модуля и точку сохранения после начала основного цикла в строке 239 (метод _csvimport). После этого вы должны снова контролировать свою память и дисковое пространство. Возможно, вставьте также печать, которая позволяет узнать, какое количество итераций выполняется.