Michael Bayer wrote:
> On Dec 22, 2009, at 3:03 PM, Igor Katson wrote:
>
>   
>> Hi,
>>
>> when a request comes into my webapp, pylons makes a shiny new 
>> threadlocal Session for this request (thread), and it's perfectly fine.
>> However, after returning the result to the client, I want to be able to 
>> continue processing in a separate thread, but not use another session 
>> (another db connection) and continue using the existing one.
>>
>> Is there a way to accomplish this?
>>
>> Thanks in advance,
>> Igor Katson.
>>     
>
> the actual session object is obtained from the "scoped" session by calling 
> it:  mysession = Session().   You want to modify the BaseController in your 
> Pylons project to not close out the contextual session at the end - or 
> alternatively, you can "detach" the existing session:
>
> mysession = Session()
> Session.registry.clear()
>
> the "scoped" session will no longer have a handle to "mysession", and you can 
> send along "mysession" to your worker thread for further operations.
>
> If it were me, the above approach is error prone and complicated.   I simply 
> transfer the state I need from the request-level Session to that of my 
> deferred worker thread using newobj = Session.merge(obj, dont_load=True).   
> The merge will copy the state of the given object into the new session, and 
> dont_load=True ensures that no SQL is emitted when this occurs - you have to 
> be sure that a concurrent transaction somewhere isn't modifing the data 
> you're passing, or you'd be operating on stale information in that case.
>
>   
Thanks, Michael, that was the best answer I could have waited for! 
Didn't know about merge(), I'll go read the api docs straight away, but 
that seems exactly what I need.

--

You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.


Reply via email to