response.custom_commit patch, thanks Jonathan

This commit is contained in:
Massimo Di Pierro
2012-04-07 16:56:32 -05:00
parent 4fbe3d6e2a
commit 8dc7d89143
3 changed files with 27 additions and 20 deletions
+1 -1
View File
@@ -1 +1 @@
Version 1.99.7 (2012-04-07 16:53:28) dev
Version 1.99.7 (2012-04-07 16:56:18) dev
+22 -17
View File
@@ -431,23 +431,28 @@ class ConnectionPool(object):
@staticmethod
def close_all_instances(action):
""" to close cleanly databases in a multithreaded environment """
if not hasattr(thread, 'instances'):
return
while thread.instances:
instance = thread.instances.pop()
if action:
getattr(instance, action)()
# ## if you want pools, recycle this connection
really = True
if instance.pool_size:
sql_locker.acquire()
pool = ConnectionPool.pools[instance.uri]
if len(pool) < instance.pool_size:
pool.append(instance.connection)
really = False
sql_locker.release()
if really:
getattr(instance, 'close')()
if hasattr(thread, 'instances'):
while thread.instances:
instance = thread.instances.pop()
if action:
if callable(action):
action(instance)
else:
getattr(instance, action)()
# ## if you want pools, recycle this connection
really = True
if instance.pool_size:
sql_locker.acquire()
pool = ConnectionPool.pools[instance.uri]
if len(pool) < instance.pool_size:
pool.append(instance.connection)
really = False
sql_locker.release()
if really:
getattr(instance, 'close')()
if callable(action):
action(None)
return
def find_or_make_work_folder(self):
+4 -2
View File
@@ -515,8 +515,10 @@ def wsgibase(environ, responder):
if response.do_not_commit is True:
BaseAdapter.close_all_instances(None)
elif response._custom_commit:
response._custom_commit()
# elif response._custom_commit:
# response._custom_commit()
elif response.custom_commit:
BaseAdapter.close_all_instances(response.custom_commit)
else:
BaseAdapter.close_all_instances('commit')