Каков предложенный способ cron-automate ZODB-пакетов для производственного экземпляра Plone?
Глядя на plone.org, чтобы найти способ периодически упаковывать мой экземпляр ZODB, я мог найти http://plone.org/documentation/faq/how-do-i-pack-the-zodb, который не говорит о автоматические пакеты, но только вручную инициированные.
Я знаю, что смогу имитировать ручной пакет с wget или curl, но я хотел бы знать, является ли это лучшей практикой для использования на производственных сайтах.
Ответы
Ответ 1
Если вы используете ZEO, вы можете добавить в свой Crontab следующее:
0 1 * * 6 <path-to-buildout>/bin/zeopack
Если вы не хотите делать это вручную, добавьте это в свой файл buildout.cfg, и запись crontab выше будет добавлена автоматически при запуске bin/buildout:
parts += crontab_zeopack
# pack your ZODB each Sunday morning and hence make it smaller and faster
[crontab_zeopack]
recipe = z3c.recipe.usercrontab
times = 0 1 * * 6
command = ${buildout:directory}/bin/zeopack
Ответ 2
Если вы не используете ZEO:
curl -X POST -d 'days:float=0' http://admin:[email protected]:8080/Control_Panel/Database/main/manage_pack
Ответ 3
Я делаю это так (от https://raw.github.com/plock/pins/master/zeo):
[backup]
recipe = collective.recipe.backup
# Backup daily
[backups]
recipe = z3c.recipe.usercrontab
times = 0 0 * * *
command = ${buildout:bin-directory}/bin/backup
# Pack once a month
[packups]
recipe = z3c.recipe.usercrontab
times = 0 0 1 * *
command = ${buildout:bin-directory}/bin/zeopack
Ответ 4
Вы можете проверить collective.migrator. У него рецепт pack_db среди других.
Ответ 5
Используйте zeopack для ZEO (см. другие ответы) и zodbpack для RelStorage (в комплекте, см. Документы RelStorage). Оба легко настраиваются.
Ответ 6
Для решения python/urllib: http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/MaintainingZope.stx
#!/usr/bin/python
import sys, urllib
host = sys.argv[1]
days = sys.argv[2]
url = "%s/Control_Panel/Database/manage_pack?days:float=%s" % \
(host, days)
try:
f = urllib.urlopen(url).read()
except IOError:
print "Cannot open URL %s, aborting" % url
print "Successfully packed ZODB on host %s" % host
Ответ 7
wget -O/dev/null -q --post-data = 'days: float = 10' --user = adminuser --password = password http://localhost:PORT//Control_Panel/Database/main/manage_pack
Если вы предпочитаете wget.