为生产Plone实例cron自动化ZODB包的建议方法是什么?

为生产Plone实例cron自动化ZODB包的建议方法是什么?,cron,plone,zope,pack,zodb,Cron,Plone,Zope,Pack,Zodb,查看plone.org,找到一种定期打包我实例的ZODB的方法,我只能发现它没有提到自动打包,而只是手动启动的打包 我知道我可以用wget或curl模拟手动包,但我想知道这是否是生产现场使用的最佳实践。如果您使用的是ZEO,您可以将以下内容添加到Crontab中以实现此目的: 0 1 * * 6 <path-to-buildout>/bin/zeopack 如果不使用ZEO: curl -X POST -d 'days:float=0' http://admin:admin@loc

查看plone.org,找到一种定期打包我实例的ZODB的方法,我只能发现它没有提到自动打包,而只是手动启动的打包


我知道我可以用wget或curl模拟手动包,但我想知道这是否是生产现场使用的最佳实践。

如果您使用的是ZEO,您可以将以下内容添加到Crontab中以实现此目的:

0 1 * * 6 <path-to-buildout>/bin/zeopack
如果不使用ZEO:

curl -X POST -d 'days:float=0' http://admin:admin@localhost:8080/Control_Panel/Database/main/manage_pack

有关python/urllib解决方案,请参见:

你可能想退房。它有一个pack\u db配方和其他配方。

我是这样做的(来自):

wget-O/dev/null-q--post data='days:float=10'--user=adminuser--password=password


如果你喜欢wget

ZEO使用zeopack(参见其他答案),RelStorage使用zodbpack(包括在内,参见RelStorage文档)。两者都很容易设置。

我真的认为zeo应该是默认设置:它比非zeo设置有太多的优势。感谢关于z3c.recipe.usercrontab的提示。对于现代Zope安装,URL是错误的,它至少应该是…/Database/main/manage_pack?。。。或者根据您的实例配置使用其他数据库名称。
curl -X POST -d 'days:float=0' http://admin:admin@localhost:8080/Control_Panel/Database/main/manage_pack
#!/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
[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