Don't close idle db connection during rebuild

This commit is contained in:
shortcutme 2018-11-08 01:20:33 +01:00
parent da9af181dd
commit 8cf30893f2
No known key found for this signature in database
GPG Key ID: 5B63BAE6CB9613AE
2 changed files with 7 additions and 6 deletions

View File

@ -21,7 +21,7 @@ def dbCleanup():
time.sleep(60 * 5)
for db in opened_dbs[:]:
idle = time.time() - db.last_query_time
if idle > 60 * 5:
if idle > 60 * 5 and db.close_idle:
db.close()
gevent.spawn(dbCleanup)
@ -29,7 +29,7 @@ gevent.spawn(dbCleanup)
class Db(object):
def __init__(self, schema, db_path):
def __init__(self, schema, db_path, close_idle=False):
self.db_path = db_path
self.db_dir = os.path.dirname(db_path) + "/"
self.schema = schema
@ -44,10 +44,11 @@ class Db(object):
self.db_keyvalues = {}
self.delayed_queue = []
self.delayed_queue_thread = None
self.close_idle = close_idle
self.last_query_time = time.time()
def __repr__(self):
return "<Db#%s:%s>" % (id(self), self.db_path)
return "<Db#%s:%s close_idle:%s>" % (id(self), self.db_path, self.close_idle)
def connect(self):
if self not in opened_dbs:

View File

@ -45,10 +45,10 @@ class SiteStorage(object):
return False
# Create new databaseobject with the site's schema
def openDb(self):
def openDb(self, close_idle=False):
schema = self.getDbSchema()
db_path = self.getPath(schema["db_file"])
return Db(schema, db_path)
return Db(schema, db_path, close_idle=close_idle)
def closeDb(self):
if self.db:
@ -77,7 +77,7 @@ class SiteStorage(object):
if self.db:
self.db.close()
self.db = self.openDb()
self.db = self.openDb(close_idle=True)
changed_tables = self.db.checkTables()
if changed_tables: