]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
further adjustment to pool.get
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 20 Jul 2007 18:35:51 +0000 (18:35 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 20 Jul 2007 18:35:51 +0000 (18:35 +0000)
lib/sqlalchemy/pool.py

index cf442c92864f6d0050d55facbb3ea6c9bfdb780b..8670464a05f8facfe0c77af12ed3255f1d1a94ce 100644 (file)
@@ -491,10 +491,14 @@ class QueuePool(Pool):
 
     def do_get(self):
         try:
-            return self._pool.get(self._max_overflow > -1 and self._overflow >= self._max_overflow, self._timeout)
+            wait = self._max_overflow > -1 and self._overflow >= self._max_overflow
+            return self._pool.get(wait, self._timeout)
         except Queue.Empty:
             if self._max_overflow > -1 and self._overflow >= self._max_overflow:
-                raise exceptions.TimeoutError("QueuePool limit of size %d overflow %d reached, connection timed out, timeout %d" % (self.size(), self.overflow(), self._timeout))
+                if not wait:
+                    return self.do_get()
+                else:
+                    raise exceptions.TimeoutError("QueuePool limit of size %d overflow %d reached, connection timed out, timeout %d" % (self.size(), self.overflow(), self._timeout))
 
             if self._overflow_lock is not None:
                 self._overflow_lock.acquire()