From 5e3d968ee999e3764df20ff455b6db21b2e0b2e5 Mon Sep 17 00:00:00 2001 From: Clint Armstrong Date: Mon, 14 Sep 2015 13:38:46 -0400 Subject: [PATCH] use threading locks instead of a boolean variable and busy loop --- poller-service.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/poller-service.py b/poller-service.py index 7b1c1c40aa..b545e4bcd4 100755 --- a/poller-service.py +++ b/poller-service.py @@ -53,14 +53,11 @@ class DB: conn = None def __init__(self): - self.in_use = False + self.in_use = threading.Lock() self.connect() def connect(self): - while self.in_use: - continue - - self.in_use = True + self.in_use.acquire(True) while True: try: self.conn.close() @@ -79,24 +76,21 @@ class DB: self.conn.autocommit(True) self.conn.ping(True) - self.in_use = False + self.in_use.release() def query(self, sql): - while self.in_use: - continue - - self.in_use = True + self.in_use.acquire(True) while True: try: cursor = self.conn.cursor() cursor.execute(sql) ret = cursor.fetchall() cursor.close() - self.in_use = False + self.in_use.release() return ret except (AttributeError, MySQLdb.OperationalError): log.warning('WARNING: MySQL Operational Error during query, reconnecting.') - self.in_use = False + self.in_use.release() self.connect() except (AttributeError, MySQLdb.ProgrammingError): log.warning('WARNING: MySQL Programming Error during query, attempting query again.')