I suspect that my understanding of both threading and Sessions is going to
be found pretty wanting here; I've basically just lifted things from
Pyramid/SQLAlchemy examples.

My understanding is that the framework handles threading, and that based on
examples and
http://www.sqlalchemy.org/docs/orm/session.html#contextual-thread-local-sessionsthis
is the correct way to create a session available throughout the
request:

DBSession =
scoped_session(sessionmaker(extension=ZopeTransactionExtension()))

(this is in my models file)

I then use this either by doing:

DBSession.query()

or

from models import DBSession
session = DBSession()
session.query()

So, I'm not doing anything explicit in turns of ending the session - I
guess I should be, but I had understood that this would happen on issue of
next query/completion of request.

Thanks, I'll look into it - I was used to Paster, where I could see the
logs in real time. I now get errors in the Apache error log... but not
whatever is initially causing the one I can see.

Ben

PS: I do have a separate process that runs in a script via cron and uses
the database which would seem like a candidate, but disabling that does not
stop the errors





On 31 October 2011 14:38, Michael Bayer <mike...@zzzcomputing.com> wrote:

>
> On Oct 31, 2011, at 8:45 AM, Benjamin Sims wrote:
>
> Hi all,
>
> I'm seeing this error intermittently in my application since switching to
> MySQL - it occurs on several different pages and I can't track down why:
>
> StatementError: Can't reconnect until invalid transaction is rolled back
> (original cause: InvalidRequestError: Can't reconnect until invalid
> transaction is rolled back) 'SELECT [... the same select every time, which
> gets a user from the database]
>
>
> how are you handling threading, as well as Session lifecycle ?  this kind
> of error usually occurs from one of two things:  a. sharing Sessions, or
> objects attached to them, between threads or b. no clear point of Session
> start/end, incorrect handling of exceptions, etc.
>
>
>
>
> I have searched on the error and read the various discussions, for example
> this one:
>
>
> http://groups.google.com/group/sqlalchemy/browse_thread/thread/a8031eefc4d5d0cd
>
> My understanding is that somewhere in my code I need to be ensuring that I
> do rollback/commit/close when the operation is complete. The problem is...
> where? Is there a way I can get a log to see the original query/point in my
> code which triggers the error.
>
>
> sure you should turn on SQLAlchemy logging fully (
> http://www.sqlalchemy.org/docs/core/engines.html?highlight=logging#configuring-logging)
>  , and also make sure you aren't squashing exceptions (i.e. except
> MyException, e: pass type of thing) - also you'd want to add code such as
> log.error("exception occurred", exc_info=True) to the point at which
> exceptions are caught so that a full stack trace is written out to the log.
>
>
>
>  --
> 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.

Reply via email to