2011-03-14 16 views
17

मेरे उदाहरण के ZODB को समय-समय पर पैक करने का तरीका खोजने के लिए plone.org पर देखकर मुझे केवल http://plone.org/documentation/faq/how-do-i-pack-the-zodb मिल सकता है जो स्वचालित पैक के बारे में बात नहीं करता है, लेकिन केवल मैन्युअल रूप से शुरू किए गए हैं।उत्पादन प्लोन उदाहरण के लिए क्रोन-स्वचालित ZODB पैक को सुझाए जाने का सुझाव क्या है?

मुझे पता है कि मैं मैन्युअल पैक को wget या curl के साथ अनुकरण कर सकता हूं, लेकिन मैं जानना चाहता हूं कि उत्पादन साइटों के लिए उपयोग में यह सबसे अच्छा अभ्यास है या नहीं।

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

आप मैन्युअल रूप से ऐसा नहीं करना चाहते हैं, तो आपके buildout.cfg और crontab प्रविष्टि से जोड़ें:

उत्तर

25

आप Zeo उपयोग कर रहे हैं तो आपको निम्न अपने 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

मुझे सच में लगता है कि ज़ीओ डिफ़ॉल्ट होना चाहिए: गैर-ज़ी सेटअप पर इसके बहुत से फायदे हैं। Z3c.recipe.usercrontab के संकेत के लिए धन्यवाद। – silviot

6

आप Zeo उपयोग नहीं करते हैं:

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

एक अजगर/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

यूआरएल आधुनिक ज़ोप इंस्टॉलेशन के लिए गलत है, यह कम से कम .../डेटाबेस/मुख्य/manage_pack? ... या आपके इंस्टेंस कॉन्फ़िगरेशन के अनुसार अन्य डेटाबेस नाम होना चाहिए। – myroslav

2

आप collective.migrator की जाँच कर सकते हैं। इसमें दूसरों के बीच एक pack_db नुस्खा है।

5

मैं इसे इस (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

ज़ीओओ के लिए ज़ीपैक का उपयोग करें (अन्य उत्तरों देखें), और RelStorage के लिए zodbpack (शामिल, RelStorage दस्तावेज़ देखें)। दोनों स्थापित करने के लिए आसान हैं।