(self, recalculate_size=False)
| 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: |
no test coverage detected