MCPcopy Index your code
hub / github.com/HelloZeroNet/ZeroNet / cleanupSites

Method cleanupSites

src/File/FileServer.py:260–306  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

258 self.log.debug("Checksites done in %.3fs" % (time.time() - s))
259
260 def cleanupSites(self):
261 import gc
262 startup = True
263 time.sleep(5 * 60) # Sites already cleaned up on startup
264 peers_protected = set([])
265 while 1:
266 # Sites health care every 20 min
267 self.log.debug(
268 "Running site cleanup, connections: %s, internet: %s, protected peers: %s" %
269 (len(self.connections), self.has_internet, len(peers_protected))
270 )
271
272 for address, site in list(self.sites.items()):
273 if not site.isServing():
274 continue
275
276 if not startup:
277 site.cleanupPeers(peers_protected)
278
279 time.sleep(1) # Prevent too quick request
280
281 peers_protected = set([])
282 for address, site in list(self.sites.items()):
283 if not site.isServing():
284 continue
285
286 if site.peers:
287 with gevent.Timeout(10, exception=False):
288 site.announcer.announcePex()
289
290 # Retry failed files
291 if site.bad_files:
292 site.retryBadFiles()
293
294 if time.time() - site.settings.get("modified", 0) < 60 * 60 * 24 * 7:
295 # Keep active connections if site has been modified witin 7 days
296 connected_num = site.needConnections(check_site_on_reconnect=True)
297
298 if connected_num < config.connected_limit: # This site has small amount of peers, protect them from closing
299 peers_protected.update([peer.key for peer in site.getConnectedPeers()])
300
301 time.sleep(1) # Prevent too quick request
302
303 site = None
304 gc.collect() # Implicit garbage collection
305 startup = False
306 time.sleep(60 * 20)
307
308 def announceSite(self, site):
309 site.announce(mode="update", pex=False)

Callers

nothing calls this directly

Calls 9

itemsMethod · 0.80
isServingMethod · 0.80
cleanupPeersMethod · 0.80
announcePexMethod · 0.80
retryBadFilesMethod · 0.80
needConnectionsMethod · 0.80
getConnectedPeersMethod · 0.80
getMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected