From cd52a61c4cb6df0779d44fb6738f23778619d103 Mon Sep 17 00:00:00 2001 From: HelloZeroNet Date: Wed, 20 Apr 2016 23:28:58 +0200 Subject: [PATCH] Save sites.json every 10 minute --- src/Site/SiteManager.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/Site/SiteManager.py b/src/Site/SiteManager.py index 6a084a77..52df41aa 100644 --- a/src/Site/SiteManager.py +++ b/src/Site/SiteManager.py @@ -4,15 +4,18 @@ import re import os import time +import gevent + from Plugin import PluginManager from Config import config from util import helper + @PluginManager.acceptPlugins class SiteManager(object): - def __init__(self): self.sites = None + gevent.spawn(self.saveTimer) # Load all sites from data/sites.json def load(self): @@ -26,7 +29,7 @@ class SiteManager(object): if address not in self.sites and os.path.isfile("%s/%s/content.json" % (config.data_dir, address)): s = time.time() self.sites[address] = Site(address) - logging.debug("Loaded site %s in %.3fs" % (address, time.time()-s)) + logging.debug("Loaded site %s in %.3fs" % (address, time.time() - s)) added += 1 address_found.append(address) @@ -39,6 +42,21 @@ class SiteManager(object): if added: logging.debug("SiteManager added %s sites" % added) + def save(self): + if not self.sites: + logging.error("Save error: No sites found") + s = time.time() + data = json.load(open("%s/sites.json" % config.data_dir)) + for address, site in self.list().iteritems(): + data[address] = site.settings + helper.atomicWrite("%s/sites.json" % config.data_dir, json.dumps(data, indent=2, sort_keys=True)) + logging.debug("Saved sites in %.2fs" % (time.time() - s)) + + def saveTimer(self): + while 1: + time.sleep(60 * 10) + self.save() + # Checks if its a valid address def isAddress(self, address): return re.match("^[A-Za-z0-9]{26,35}$", address)