[ZDP] BackTalk to Document The Zope Book (2.6 Edition)/Maintaining
Zope
webmaster at zope.org
webmaster at zope.org
Tue Mar 16 11:35:48 EST 2004
A comment to the paragraph below was recently added via http://zope.org/Documentation/Books/ZopeBook/2_6Edition/MaintainingZope.stx#2-40
---------------
If you want to automatically pack the ZODB you could tickle the
appropriate URL with a small python script (the traditional
filesystem based kind, not Zopes "Script (Python)")::
#!/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
% Anonymous User - Dec. 4, 2003 6:55 pm:
Is it really possible to pack anonymously through-the-web?
Shouldn't everything in the control panel require authentication?
% Anonymous User - Dec. 6, 2003 12:58 pm:
I just checked with zope 2.6.2... authentication is required to tickle that URL.
% Anonymous User - Mar. 10, 2004 6:35 am:
http://user:password@host:port/...
% Anonymous User - Mar. 10, 2004 7:53 am:
Automatically pack the ZODB with user/password
This works! Please change the script above, because
the original script makes no sense.
#!/usr/bin/python
import sys, urllib
host = sys.argv[1]
days = sys.argv[2]
user = sys.argv[3]
pwd = sys.argv[4]
class MyUrlOpener(urllib.FancyURLopener):
def prompt_user_passwd(self, host, realm):
return (user,pwd)
def __init__(self, *args):
self.version = "Zope Packer"
urllib.FancyURLopener.__init__(self, *args)
def main():
urllib._urlopener = MyUrlOpener()
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
if __name__ == '__main__':
main()
% Anonymous User - Mar. 16, 2004 11:35 am:
In the example above, you used
> url = "%s/Control_panel/Database/manage_pack?days;float=%s" % (host, days)
Does this function pack all the DBs? For example I want to use some databases for virtual hosting and I need
to pack all of them periodically. What about the time of this operation? I meet some strange feature: little
db Test.fs (about 5KB size) was packed during 1 second - browser showed me new size (about 3KB), and file
Test.fs.old appeared. Attempt to pack database again raises an error:
Error Type: FileStorageError
Error Value: The database has already been packed to a later time or no changes have been made since the last
pack
OK.
The same operation with another db Main.fs (about 3MB) leaded to the following:
-browser showed page, where size was the same as before starting pack, and no file appeared in var directory.
-attempt to repack the db leads to error:
Error Type: FileStorageError
Error Value: Already packing
About 20 minutes passed but nothing changed.
So how can I know the moment of packing finish?
At what time should I backup the db file?
More information about the ZDP
mailing list