Еженедельная упаковка ZODB для сайта Plone

Каковы наилучшие методы регулярной упаковки базы данных Plone ZODB (например, еженедельно)?

  • Кластер Plone ZEO и экземпляр Zope с одним процессом отличаются?

  • Использование зеопак+крон

  • Использование wget + некоторый URL + cron + специальный пользователь Zope

  • Другие способы?

  • ZClockServer или cron?

Я обнаружил, что иногда zeopack действительно не упаковывает базу данных, если команда выполняется в cron. Однако отладка этой проблемы не представляет особых проблем, так как ни zeopack, ни ZODB мало сообщают о себе. Любые идеи, что может вызвать такие условия?


person Mikko Ohtamaa    schedule 07.08.2012    source источник
comment
Некоторое обсуждение этого уже обсуждалось в stackoverflow.com/questions/5300886/.   -  person zupo    schedule 07.08.2012
comment
Я видел проблемы с zeopack и cron только в некоторых старых версиях ZODB, а не в приличных версиях ZODB.   -  person Andreas Jung    schedule 07.08.2012


Ответы (1)


Это зависит от того, как вы настроили свой сайт, между 3 вариантами:

  1. Автономно, с использованием Data.fs (по умолчанию). Ваш единственный вариант — использовать задание wget cron, желательно с выделенным пользователем Zope, единственным разрешением которого является упаковка. Это связано с тем, что процесс Zope — единственный процесс, имеющий доступ к Data.fs.

  2. Установка ZEO. Теперь вы можете поручить серверу ZEO упаковать ваши Data.fs с помощью задания cron (см. automate-zodb-packs-for-a-production-plone-ins/5301192#5301192">Какой предлагаемый способ cron-автоматизировать пакеты ZODB для рабочего экземпляра Plone?).

  3. Настройка RelStorage. RelStorage включает собственный скрипт упаковки; вот конфигурация сборки для ее создания, затем вы можете запустить ее из задания cron:

    [buildout]
    packing-parts =
        relstorage-zodbpack-conf
        relstorage-zodbpack
    
    [relstorage-zodbpack-conf]
    recipe = collective.recipe.template
    input = inline:
        <relstorage>
            pack-gc true
            create-schema false
          <[yourdatabase]>
            [database connection info]
          </[yourdatabase]>
        </relstorage>
    output = ${buildout:directory}/etc/zodbpack.conf
    
    [relstorage-zodbpack]
    recipe = zc.recipe.egg:scripts
    eggs =
        RelStorage
    scripts = zodbpack
    initialization =
        config = '${buildout:directory}/etc/zodbpack.conf'
    arguments = config
    
person Martijn Pieters    schedule 07.08.2012