diff --git a/src/Db/Db.py b/src/Db/Db.py index 4546bc13..3e40d003 100644 --- a/src/Db/Db.py +++ b/src/Db/Db.py @@ -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 "" % (id(self), self.db_path) + return "" % (id(self), self.db_path, self.close_idle) def connect(self): if self not in opened_dbs: diff --git a/src/Site/SiteStorage.py b/src/Site/SiteStorage.py index 41699818..01066c9f 100644 --- a/src/Site/SiteStorage.py +++ b/src/Site/SiteStorage.py @@ -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: