On startup don't run more than 5 checkSite at the same time

This commit is contained in:
shortcutme 2018-08-29 19:54:31 +02:00
parent ee97eb6d27
commit 3a9ded9315
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -6,6 +6,7 @@ import random
import socket import socket
import gevent import gevent
import gevent.pool
import util import util
from Config import config from Config import config
@ -263,6 +264,7 @@ class FileServer(ConnectionServer):
@util.Noparallel() @util.Noparallel()
def checkSites(self, check_files=False, force_port_check=False): def checkSites(self, check_files=False, force_port_check=False):
self.log.debug("Checking sites...") self.log.debug("Checking sites...")
s = time.time()
sites_checking = False sites_checking = False
if self.port_opened is None or force_port_check: # Test and open port if not tested yet if self.port_opened is None or force_port_check: # Test and open port if not tested yet
if len(self.sites) <= 2: # Don't wait port opening on first startup if len(self.sites) <= 2: # Don't wait port opening on first startup
@ -277,11 +279,13 @@ class FileServer(ConnectionServer):
self.tor_manager.startOnions() self.tor_manager.startOnions()
if not sites_checking: if not sites_checking:
check_pool = gevent.pool.Pool(5)
for site in sorted(self.sites.values(), key=lambda site: site.settings.get("modified", 0), reverse=True): # Check sites integrity for site in sorted(self.sites.values(), key=lambda site: site.settings.get("modified", 0), reverse=True): # Check sites integrity
check_thread = gevent.spawn(self.checkSite, site, check_files) # Check in new thread check_thread = check_pool.spawn(self.checkSite, site, check_files) # Check in new thread
time.sleep(2) time.sleep(2)
if site.settings.get("modified", 0) < time.time() - 60 * 60 * 24: # Not so active site, wait some sec to finish if site.settings.get("modified", 0) < time.time() - 60 * 60 * 24: # Not so active site, wait some sec to finish
check_thread.join(timeout=5) check_thread.join(timeout=5)
self.log.debug("Checksites done in %.3fs" % (time.time() - s))
def cleanupSites(self): def cleanupSites(self):
import gc import gc