Only recalculate site sizes on exit
This commit is contained in:
parent
65d68fb8ac
commit
5a08545e2d
1 changed files with 11 additions and 5 deletions
|
@ -21,7 +21,7 @@ class SiteManager(object):
|
||||||
self.sites = None
|
self.sites = None
|
||||||
self.loaded = False
|
self.loaded = False
|
||||||
gevent.spawn(self.saveTimer)
|
gevent.spawn(self.saveTimer)
|
||||||
atexit.register(self.save)
|
atexit.register(lambda: self.save(recalculate_size=True))
|
||||||
|
|
||||||
# Load all sites from data/sites.json
|
# Load all sites from data/sites.json
|
||||||
def load(self, cleanup=True):
|
def load(self, cleanup=True):
|
||||||
|
@ -75,7 +75,7 @@ class SiteManager(object):
|
||||||
self.log.debug("SiteManager added %s sites" % added)
|
self.log.debug("SiteManager added %s sites" % added)
|
||||||
self.loaded = True
|
self.loaded = True
|
||||||
|
|
||||||
def save(self):
|
def save(self, recalculate_size=False):
|
||||||
if not self.sites:
|
if not self.sites:
|
||||||
self.log.debug("Save skipped: No sites found")
|
self.log.debug("Save skipped: No sites found")
|
||||||
return
|
return
|
||||||
|
@ -85,27 +85,33 @@ class SiteManager(object):
|
||||||
s = time.time()
|
s = time.time()
|
||||||
data = {}
|
data = {}
|
||||||
# Generate data file
|
# Generate data file
|
||||||
|
s = time.time()
|
||||||
for address, site in self.list().iteritems():
|
for address, site in self.list().iteritems():
|
||||||
|
if recalculate_size:
|
||||||
site.settings["size"] = site.content_manager.getTotalSize() # Update site size
|
site.settings["size"] = site.content_manager.getTotalSize() # Update site size
|
||||||
data[address] = site.settings
|
data[address] = site.settings
|
||||||
data[address]["cache"] = {}
|
data[address]["cache"] = {}
|
||||||
data[address]["cache"]["bad_files"] = site.bad_files
|
data[address]["cache"]["bad_files"] = site.bad_files
|
||||||
data[address]["cache"]["hashfield"] = site.content_manager.hashfield.tostring().encode("base64")
|
data[address]["cache"]["hashfield"] = site.content_manager.hashfield.tostring().encode("base64")
|
||||||
|
time_generate = time.time() - s
|
||||||
|
|
||||||
|
s = time.time()
|
||||||
if data:
|
if data:
|
||||||
helper.atomicWrite("%s/sites.json" % config.data_dir, json.dumps(data, indent=2, sort_keys=True))
|
helper.atomicWrite("%s/sites.json" % config.data_dir, json.dumps(data, indent=2, sort_keys=True))
|
||||||
else:
|
else:
|
||||||
self.log.debug("Save error: No data")
|
self.log.debug("Save error: No data")
|
||||||
|
time_write = time.time() - s
|
||||||
|
|
||||||
# Remove cache from site settings
|
# Remove cache from site settings
|
||||||
for address, site in self.list().iteritems():
|
for address, site in self.list().iteritems():
|
||||||
site.settings["cache"] = {}
|
site.settings["cache"] = {}
|
||||||
|
|
||||||
self.log.debug("Saved sites in %.2fs" % (time.time() - s))
|
self.log.debug("Saved sites in %.2fs (generate: %.2fs, write: %.2fs)" % (time.time() - s, time_generate, time_write))
|
||||||
|
|
||||||
def saveTimer(self):
|
def saveTimer(self):
|
||||||
while 1:
|
while 1:
|
||||||
time.sleep(60 * 10)
|
time.sleep(60 * 10)
|
||||||
self.save()
|
self.save(recalculate_size=True)
|
||||||
|
|
||||||
# Checks if its a valid address
|
# Checks if its a valid address
|
||||||
def isAddress(self, address):
|
def isAddress(self, address):
|
||||||
|
|
Loading…
Reference in a new issue