2011-03-14 12 views
17

Observando plone.org para encontrar una forma de empacar 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 automáticos, sino solo de los iniciados manualmente.¿Cuál es la forma sugerida de automatizar cron los paquetes ZODB para una instancia Plone de producción?

Sé que puedo simular el paquete manual con wget o curl, pero me gustaría saber si esa es la mejor práctica en uso para los sitios de producción.

Respuesta

25

Si está usando ZEO se puede añadir lo siguiente a su crontab para hacer esto:

0 1 * * 6 <path-to-buildout>/bin/zeopack 

Si no desea hacerlo de forma manual, agregar esto a su buildout.cfg y la entrada crontab anterior se añadirá automáticamente al ejecutar 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

Realmente creo que zeo debería ser el valor predeterminado: tiene demasiadas ventajas sobre las configuraciones que no son zeo. Gracias por la pista sobre z3c.recipe.usercrontab. – silviot

6

Si no se utiliza ZEO:

curl -X POST -d 'days:float=0' http://admin:[email protected]:8080/Control_Panel/Database/main/manage_pack 
1

Para una solución/urllib pitón, ver: 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

La URL es incorrecta para las instalaciones modernas de Zope, debe ser al menos .../Database/main/manage_pack? ... o tener otro nombre de base de datos según la configuración de su instancia. – myroslav

5

lo hago como este (de https://raw.github.com/plock/pins/master/zeo): 'día: float = 10'

[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

Utilice zeopack para ZEO (consulte otras respuestas) y zodbpack para RelStorage (incluido, consulte los documentos de RelStorage). Ambos son fáciles de configurar.

Cuestiones relacionadas