Как предлагается cron-автоматизировать пакеты ZODB для промышленного экземпляра Plone? - PullRequest
17 голосов
/ 14 марта 2011

Глядя на plone.org, чтобы найти способ периодически упаковать ZODB моего экземпляра, я смог найти только http://plone.org/documentation/faq/how-do-i-pack-the-zodb, который не говорит об автоматизированных пакетах, а просто инициируемых вручную.

IЯ знаю, что могу смоделировать пакет вручную с помощью wget или curl, но я хотел бы знать, является ли это наилучшей практикой при использовании для производственных сайтов.

Ответы [ 7 ]

25 голосов
/ 14 марта 2011

Если вы используете 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
6 голосов
/ 15 марта 2011

Если вы не используете ZEO:

curl -X POST -d 'days:float=0' http://admin:admin@localhost:8080/Control_Panel/Database/main/manage_pack
5 голосов
/ 07 апреля 2011

Я делаю это так (с 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
2 голосов
/ 15 апреля 2012

Используйте Zeopack для ZEO (см. Другие ответы) и zodbpack для RelStorage (в комплекте, см. Документы RelStorage).И то, и другое легко настроить.

2 голосов
/ 05 апреля 2011

Вы можете проверить коллективный.migrator .Среди прочих есть рецепт pack_db.

1 голос
/ 15 марта 2011

Для решения 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
0 голосов
/ 14 апреля 2012

wget -O / dev / null -q --post-data = 'days: float = 10' --user = adminuser --password = пароль http://localhost:PORT//Control_Panel/Database/main/manage_pack

Если вы предпочитаете wget.

...