У нас есть длинный запрос, который выполняет поиск по каталогу, затем вычисляет некоторую информацию и затем сохраняет ее в другом документе. Вызов Do выполняется для индексации документа после сохранения.
В журналах мы получаем такие ошибки, как INFO ZPublisher.Conflict ConflictError at /pooldb/csvExport/runAgent: ошибка конфликта базы данных (oid 0x017f1eae, класс BTrees.IIBTree.IISet, серийный номер этого txn начинается с 0x03a30beb4659b266 2013-11-27 23: 07:16.488370, серийный номер в настоящее время зафиксирован 0x03a30c0d2ca5b9aa 27-11-2013 23:41:10.464226) (19 конфликтов (0 неразрешенных) с момента запуска в понедельник, 25 ноября, 15:59:08 2013 г.), и транзакция прерывается и перезапускается.
Во всей документации, которую я читал, говорится, что из-за MVVC в ZODB ReadConflicts больше не возникает. Поскольку это написано на RestrictedPython, установка точки сохранения не является простым вариантом (но, вероятно, мой единственный выбор, я думаю).
Есть ли другой способ избежать этого конфликта? Если мне нужно использовать точки сохранения, может ли кто-нибудь придумать причину безопасности, почему я не должен вносить в белый список метод транзакции точки сохранения для использования в PythonScripts?