¿Cuál es la forma sugerida para cron-automatizar paquetes de ZODB para una instancia de Plone de producción?
zope pack (7)
Buscando en plone.org para encontrar una forma de empaquetar periódicamente el ZODB de mi instancia, solo pude encontrar http://plone.org/documentation/faq/how-do-i-pack-the-zodb que no habla de paquetes automatizados , pero solo iniciados manualmente.
Sé que puedo simular el paquete manual con wget o curl, pero me gustaría saber si esa es la mejor práctica para los sitios de producción.
Es posible que desee retirar collective.migrator . Tiene una receta pack_db entre otras.
Lo hago así (desde 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
Para una solución de python / urllib, consulte: 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
Si está utilizando ZEO, puede agregar lo siguiente a su Crontab para hacer esto:
0 1 * * 6 <path-to-buildout>/bin/zeopack
Si no desea hacerlo manualmente, agregue esto a su buildout.cfg y la entrada de crontab anterior se agregará automáticamente cuando ejecute 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
Si no usa ZEO:
curl -X POST -d ''days:float=0'' http://admin:admin@localhost:8080/Control_Panel/Database/main/manage_pack
Use zeopack para ZEO (ver otras respuestas), y zodbpack para RelStorage (incluido, vea los documentos de RelStorage). Ambos son fáciles de configurar.
wget -O / dev / null -q --post-data = ''days: float = 10'' --user = adminuser --password = contraseña http://localhost:PORT//Control_Panel/Database/main/manage_pack
Si prefieres wget.