On Oct 5, 4:08 pm, Alessandro Molina <[email protected]>
wrote:
> On Wed, Oct 5, 2011 at 5:36 AM, Sean DiZazzo <[email protected]> wrote:
> > Hi,I have a Turbogears 2.1.2 app that kicks off a long running
> > parallel task.  The task is run in many threads and on several
> > machines,and they all need to use the model to update the database.
> > What are the best practices for running DBSessions in threads?  I
>
> You can try tgext.asyncjob it might do most of the work for you.
> It will manage the session for you letting you just use the
> model.DBSession inside the asynchronous threads.
>
> About the session, by default TurboGears already provides a
> sessionmaker which will create one scoped_session for each thread that
> will try to use the DBSession object. The main issue is that TG
> patches the session to use a different transactions manager which runs
> inside the TG middleware stack by committing and reverting session
> whenever is necessary. When you use the session outside of a request
> anyway this middleware is not in place and so you will have to manage
> the session yourself. By default tgext.asyncjob implements a worker
> that behaves like TG, committing the session at the end of the async
> function and reverting it in case of an exception.

I have seen that code before and it's very nice.  It won't quite work
on my project, but I will try to steal the relevant transaction
parts.  Parts of my code are not run in the typical Turbogears
controller and run as daemons on other boxes.  I have tried to create
the same environment on those client boxes, but when I switched the
code to use the DBSession from tg, I started getting errors like:

UnboundExecutionError: Could not locate a bind configured on mapper
Mapper|Job|jobs, SQL expression or this Session

I think some part of the environment is not set correctly.  What is
the minimum I need to do to be able to use the DBSession without these
errors?  I see lots of posts regarding this issue.  Would following
this solve the issue? http://permalink.gmane.org/gmane.comp.web.turbogears/43261
or is there an alternative suggested way?  Thanks!

~Sean

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" 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/turbogears?hl=en.

Reply via email to