On Aug 12, 2010, at 9:25 AM, Faheem Mitha wrote: > > Hi Mike, > > Thanks for the response, but I don't follow. > > When you say "multiple threads are hitting the session you have > above", which session are you referring to? There is more than one > object above that could be called a session. Ie.
I don't actually know, it would require that I have a full install of your application for me to run and step through with a debugger to fully understand what it's doing. All I can say from here is that the errors you have suggest concurrent access to a single psycopg2 connection resource, and that a single Session references a single connection when in use. A MetaData object does not, nor does an Engine - only a Session. If you remove all threading from your application and the errors go away, then you know you're accessing some resource illegally. > > Session1 in "Session1 = sessionmaker()" > session1 in "session1 = Session1(bind=db)" > Session2 in "Session2 = scoped_session(sessionmaker())" > > Let me try to ask a precise question. If I do > > Session = scoped_session(sessionmaker()) > > then is it ok for this Session object to be be passed around > between multiple threads and used directly as in > > Session.commit() > > Does this correspond to a single psycopyg2 connection? If it does, and > this usage is wrong, should I be creating separate sessions within > each thread like That's a scoped_session, which is threadsafe. Everything you call upon it will acquire a Session object from a thread local context, and commit() is called on that (for information on thread locals, see http://docs.python.org/library/threading.html#threading.local. If you pass a scoped_session from one thread to another, and the second thread calls commit(), the second thread is not affecting the transaction begun by the first. They are two separate transactions. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@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.