From c161140a90a6193ad1b553979574d67a9355f046 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Wed, 18 Dec 2019 16:43:46 +0100 Subject: [PATCH] Add locking for db cursor --- src/Db/DbCursor.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Db/DbCursor.py b/src/Db/DbCursor.py index 4a337273..245ed305 100644 --- a/src/Db/DbCursor.py +++ b/src/Db/DbCursor.py @@ -93,14 +93,21 @@ class DbCursor: query, params = self.parseQuery(query, params) - s = time.time() cursor = self.db.getConn().cursor() self.db.cursors.add(cursor) + if self.db.lock.locked(): + self.db.log.debug("Locked for %.3fs" % (time.time() - self.db.lock.time_lock)) + + try: + s = time.time() + self.db.lock.acquire(True) + if params: + res = cursor.execute(query, params) + else: + res = cursor.execute(query) + finally: + self.db.lock.release() - if params: - res = cursor.execute(query, params) - else: - res = cursor.execute(query) taken_query = time.time() - s if self.logging or taken_query > 0.1: if params: # Query has parameters