Right now Django absolutely does not close all cursors, if you look at django/db/models/sql/compiler.py def execute_sql (sorry, going from memory here) you'll see this. It'd be good if it did. There used to be some crazy stuff around reading chunks and emitting those, now that I believe Anssi has removed those it should be more straightforward to close cursors there.
Alex On Fri, May 17, 2013 at 5:23 AM, Aymeric Augustin < [email protected]> wrote: > Hi Vernon, > > On 17 mai 2013, at 13:26, VernonCole <[email protected]> wrote: > > > After much debugging it looks like my database proxy server may be > running out of worker threads: it uses one for each cursor. > > > With DB-API adapters, the connections are expected to be expensive and > cursors cheap. (If this sounds obscure, I recommend re-reading PEP 249.) > > It appears that creating a cursor is expensive in your setup, and that's > the problem. Roughly, your proxy server can use one thread per connection, > but not per cursor. > > It's hard to give accurate advice here; overall I think that's why you're > running into trouble. > > > My traces show that, when running the test suite in django-mssql (using > ./manage.py test) cursors are neither re-used, nor closed. > > > Django can create a lot of cursors and that isn't expected to be a > problem. Django should close these cursors and I'm not convinced it always > does. If you could file a bug report with a bit more information (X leaks > an unclosed cursor) that would help. > > > My verbose trace shows, for each new test class, a connection is > created, a cursor is created, one SQL statement is run, another cursor is > created, another SQL statement run, etc., until the test completes. Then > the connection is closed, which (inside my adapter) triggers the closing of > all of those cursors, sometimes a dozen or more. > > That's very, very weird. The test suite is supposed to keep a single > connection opened during the entire test run — that's required to make it > work with an in-memory SQLite database (ignoring multi-db tests). > > > The idea of re-using connections in 1.6 causes me to _really_ worry. Is > this behaviour expected but only happens in testing? > > Fortunately I don't think persistent connections are related to the > problems you're seeing. They're about keeping connections, while your > problems seem to revolve around cursors. > > -- > Aymeric. > > -- > You received this message because you are subscribed to the Google Groups > "Django developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/django-developers?hl=en > . > For more options, visit https://groups.google.com/groups/opt_out. > > > -- "I disapprove of what you say, but I will defend to the death your right to say it." -- Evelyn Beatrice Hall (summarizing Voltaire) "The people's good is the highest law." -- Cicero GPG Key fingerprint: 125F 5C67 DFE9 4084 -- You received this message because you are subscribed to the Google Groups "Django developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-developers?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
