MCPcopy
hub / github.com/HelloZeroNet/ZeroNet / save

Method save

src/Site/SiteManager.py:95–124  ·  view source on GitHub ↗
(self, recalculate_size=False)

Source from the content-addressed store, hash-verified

93 RateLimit.callAsync("Save sites.json", allowed_again=5, func=self.save)
94
95 def save(self, recalculate_size=False):
96 if not self.sites:
97 self.log.debug("Save skipped: No sites found")
98 return
99 if not self.loaded:
100 self.log.debug("Save skipped: Not loaded")
101 return
102 s = time.time()
103 data = {}
104 # Generate data file
105 s = time.time()
106 for address, site in self.list().items():
107 if recalculate_size:
108 site.settings["size"], site.settings["size_optional"] = site.content_manager.getTotalSize() # Update site size
109 data[address] = site.settings
110 data[address]["cache"] = site.getSettingsCache()
111 time_generate = time.time() - s
112
113 s = time.time()
114 if data:
115 helper.atomicWrite("%s/sites.json" % config.data_dir, helper.jsonDumps(data).encode("utf8"))
116 else:
117 self.log.debug("Save error: No data")
118 time_write = time.time() - s
119
120 # Remove cache from site settings
121 for address, site in self.list().items():
122 site.settings["cache"] = {}
123
124 self.log.debug("Saved sites in %.2fs (generate: %.2fs, write: %.2fs)" % (time.time() - s, time_generate, time_write))
125
126 def saveTimer(self):
127 while 1:

Callers 3

__init__Method · 0.95
saveTimerMethod · 0.95
deleteMethod · 0.95

Calls 4

listMethod · 0.95
itemsMethod · 0.80
getTotalSizeMethod · 0.45
getSettingsCacheMethod · 0.45

Tested by

no test coverage detected