On Sep 11, 2012, at 11:09 AM, Charles-Axel Dein wrote: > Ok great! Thanks for the doc fix. > > Ok also for Session.remove(), I must admit Session.remove() is one of the > part where the documentation is quite elliptical...
I rewrote a lot of it last night, give it a try: http://docs.sqlalchemy.org/en/latest/orm/session.html#contextual-thread-local-sessions http://docs.sqlalchemy.org/en/latest/orm/session.html#sqlalchemy.orm.scoping.scoped_session.remove > > On Tue, Sep 11, 2012 at 5:01 PM, Michael Bayer <mike...@zzzcomputing.com> > wrote: > > On Sep 11, 2012, at 7:52 AM, charlax wrote: > >> Hi, >> >> I have to explicitly close the engine connection, otherwise I get a >> TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection >> timed out, timeout 30 error when using nosetest and sqlalchemy. I'm not >> using multiprocessing. >> >> I'm following the SqlAlchemy documentation about how to join a Session into >> an external transaction. The only difference is that I'm using a >> scopedsession. Here is the offending code: >> >> class MyTest(unittest.TestCase): >> >> def setUp(self): >> self.connection = engine.connect() # Btw, not attaching as an >> attribute does not change anything >> >> # begin a non-ORM transaction >> self.trans = self.connection.begin() >> >> # bind an individual Session to the connection >> Session.configure(bind=self.connection) >> >> self.addCleanup(self._teardown) >> >> def _teardown(self): >> """Rollback the db. >> >> Added to the list of cleanup by setUp, so that subclasses do not >> have to >> call super() on tearDown. >> """ >> >> # Rollback database >> self.trans.rollback() >> >> # Session must be closed BEFORE being removed >> Session.close() >> Session.remove() >> # If I don't do that, I get TimeOut >> # self.connection.close() > > OK, so that's a small omission in the doc then, because yes you need the > connection.close() there. When you run the tests with unittest, unittest > creates a new instance of your test class, which means all those test class > instances will have self.connection present there and not returned to the > pool. > > doc fix in 5 minutes. > > also remove() implies close() when using scoped_session. > > > > > > > >> >> Here's the echo_pool debug output: >> >> 2012-09-11 12:34:28,506 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bae1e20> >> 2012-09-11 12:34:28,514 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bae1e20> checked out from pool >> 2012-09-11 12:34:29,664 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bc61c20> >> 2012-09-11 12:34:29,665 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bc61c20> checked out from pool >> 2012-09-11 12:34:30,368 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bc9ea20> >> 2012-09-11 12:34:30,369 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bc9ea20> checked out from pool >> 2012-09-11 12:34:31,042 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bcd6820> >> 2012-09-11 12:34:31,043 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bcd6820> checked out from pool >> 2012-09-11 12:34:31,775 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bcbd820> >> 2012-09-11 12:34:31,775 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bcbd820> checked out from pool >> 2012-09-11 12:34:32,439 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bcc2220> >> 2012-09-11 12:34:32,439 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bcc2220> checked out from pool >> 2012-09-11 12:34:33,129 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bd0e220> >> 2012-09-11 12:34:33,129 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bd0e220> checked out from pool >> 2012-09-11 12:34:33,802 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bd1e420> >> 2012-09-11 12:34:33,802 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bd1e420> checked out from pool >> 2012-09-11 12:34:34,590 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bcf6a20> >> 2012-09-11 12:34:34,590 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bcf6a20> checked out from pool >> 2012-09-11 12:34:35,452 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bd53420> >> 2012-09-11 12:34:35,452 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bd53420> checked out from pool >> 2012-09-11 12:34:36,276 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bd32420> >> 2012-09-11 12:34:36,276 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bd32420> checked out from pool >> 2012-09-11 12:34:36,970 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bd80420> >> 2012-09-11 12:34:36,971 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bd80420> checked out from pool >> 2012-09-11 12:34:37,639 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bda9020> >> 2012-09-11 12:34:37,640 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bda9020> checked out from pool >> 2012-09-11 12:34:37,664 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bdc3c20> >> 2012-09-11 12:34:37,664 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bdc3c20> checked out from pool >> 2012-09-11 12:34:37,675 DEBUG sqlalchemy.pool.QueuePool Created new >> connection <_mysql.connection open to '127.0.0.1' at 7f938bd95e20> >> 2012-09-11 12:34:37,675 DEBUG sqlalchemy.pool.QueuePool Connection >> <_mysql.connection open to '127.0.0.1' at 7f938bd95e20> checked out from pool >> >> I'm using Python 2.7.2, SQA 0.7.5, nosetests 1.1.3 and Pyramid. >> >> Thanks for your help! >> >> Charles >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To view this discussion on the web visit >> https://groups.google.com/d/msg/sqlalchemy/-/4ZcTN0cHDnIJ. >> To post to this group, send email to sqlalchemy@googlegroups.com. >> To unsubscribe from this group, send email to >> sqlalchemy+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/sqlalchemy?hl=en. > > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalchemy@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalchemy@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.