Delay saving users.json

This commit is contained in:
shortcutme 2018-04-12 19:25:13 +02:00
parent 05db08c8d2
commit 4eb843fd8c
No known key found for this signature in database
GPG Key ID: 5B63BAE6CB9613AE
2 changed files with 12 additions and 6 deletions

View File

@ -25,6 +25,7 @@ class User(object):
self.master_address = CryptBitcoin.privatekeyToAddress(self.master_seed)
self.sites = data.get("sites", {})
self.certs = data.get("certs", {})
self.delayed_save_thread = None
self.log = logging.getLogger("User:%s" % self.master_address)
@ -41,7 +42,12 @@ class User(object):
user_data["sites"] = self.sites
user_data["certs"] = self.certs
helper.atomicWrite("%s/users.json" % config.data_dir, json.dumps(users, indent=2, sort_keys=True))
self.log.debug("Saved in %.3fs" % (time.time()-s))
self.log.debug("Saved in %.3fs" % (time.time() - s))
self.delayed_save_thread = None
def saveDelayed(self):
if not self.delayed_save_thread:
self.delayed_save_thread = gevent.spawn_later(5, self.save)
def getAddressAuthIndex(self, address):
return int(address.encode("hex"), 16)
@ -71,13 +77,13 @@ class User(object):
def deleteSiteData(self, address):
if address in self.sites:
del(self.sites[address])
self.save()
self.saveDelayed()
self.log.debug("Deleted site: %s" % address)
def setSettings(self, address, settings):
site_data = self.getSiteData(address)
site_data["settings"] = settings
self.save()
self.saveDelayed()
return site_data
# Get data for a new, unique site
@ -92,7 +98,7 @@ class User(object):
# Save to sites
self.getSiteData(site_address)
self.sites[site_address]["privatekey"] = site_privatekey
self.save()
self.saveDelayed()
return site_address, bip32_index, self.sites[site_address]
# Get BIP32 address from site address
@ -145,7 +151,7 @@ class User(object):
else:
if "cert" in site_data:
del site_data["cert"]
self.save()
self.saveDelayed()
return site_data
# Get cert for the site address

View File

@ -47,7 +47,7 @@ class UserManager(object):
self.log.debug("Created user: %s" % user.master_address)
if user.master_address: # If successfully created
self.users[user.master_address] = user
user.save()
user.saveDelayed()
return user
# List all users from data/users.json