Lock db while connecting
This commit is contained in:
parent
1670d96908
commit
c24cfa721b
1 changed files with 26 additions and 16 deletions
10
src/Db/Db.py
10
src/Db/Db.py
|
@ -85,11 +85,18 @@ class Db(object):
|
||||||
self.last_sleep_time = time.time()
|
self.last_sleep_time = time.time()
|
||||||
self.num_execute_since_sleep = 0
|
self.num_execute_since_sleep = 0
|
||||||
self.lock = ThreadPool.Lock()
|
self.lock = ThreadPool.Lock()
|
||||||
|
self.connect_lock = ThreadPool.Lock()
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<Db#%s:%s close_idle:%s>" % (id(self), self.db_path, self.close_idle)
|
return "<Db#%s:%s close_idle:%s>" % (id(self), self.db_path, self.close_idle)
|
||||||
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
|
self.connect_lock.acquire(True)
|
||||||
|
try:
|
||||||
|
if self.conn:
|
||||||
|
self.log.debug("Already connected, connection ignored")
|
||||||
|
return
|
||||||
|
|
||||||
if self not in opened_dbs:
|
if self not in opened_dbs:
|
||||||
opened_dbs.append(self)
|
opened_dbs.append(self)
|
||||||
s = time.time()
|
s = time.time()
|
||||||
|
@ -106,6 +113,9 @@ class Db(object):
|
||||||
"Connected to %s in %.3fs (opened: %s, sqlite version: %s)..." %
|
"Connected to %s in %.3fs (opened: %s, sqlite version: %s)..." %
|
||||||
(self.db_path, time.time() - s, len(opened_dbs), sqlite3.version)
|
(self.db_path, time.time() - s, len(opened_dbs), sqlite3.version)
|
||||||
)
|
)
|
||||||
|
self.log.debug("Connect called by %s" % Debug.formatStack())
|
||||||
|
finally:
|
||||||
|
self.connect_lock.release()
|
||||||
|
|
||||||
def progress(self, *args, **kwargs):
|
def progress(self, *args, **kwargs):
|
||||||
self.progress_sleeping = True
|
self.progress_sleeping = True
|
||||||
|
|
Loading…
Reference in a new issue