[Twisted-Python] run queries in deffered, but not in transaction

Matt Perry matt at unshift.net
Thu Sep 17 12:35:05 EDT 2009


That way works, but the original problem was that a failure in one of them
was stopping the whole callback chain.

Missing from my example (but present in a past example) was a try/except
around the yield keyword.  So:

...
try:
   yield deferred1
except:
   pass
...
try:
   yield deferred2
except:
   pass


would swallow any exceptions thrown by deferred1 and continue on to create
deferred2.  If you did:

d.addCallback(foo)
d.addCallback(bar)
d.addCallback(baz)

then an exception in "foo" would break the whole callback chain.


   - Matt

On Thu, Sep 17, 2009 at 3:32 AM, Amaury Forgeot d'Arc <amauryfa at gmail.com>wrote:

> Hello,
>
> 2009/9/17 Matt Perry <matt at unshift.net>:
> > Make sure you're using the @inlineCallbacks decorator and the yield
> > statement referenced previously.  Without those you're just adding
> several
> > callbacks to the same Deferred; with them, the function will wait until
> the
> > Deferred fires before continuing.
> >
> > def logRequest(self, *arg, **kw):
> >    obj = copy.deepcopy(kw['obj'])
> >
> >    d = self.db.runInteraction(obj.first)
> >
> >    d.addCallback(self.db.runInteraction, obj.second, param1, param2)
> >    d.addErrback(log.err)
> >
> >    d.addCallback(self.db.runInteraction, obj.third)
> >    d.addErrback(log.err)
>
> I don't understand your explanation. When a callback returns a Deferred
> itself,
> the main Deferred object waits for its completion before continuing.
> This is IMO the best feature of Deferreds!
>
> I often write code like the function above, so I would like to understand
> why
> it does not work in this case.
>
> --
> Amaury Forgeot d'Arc
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20090917/0be166bc/attachment.htm 


More information about the Twisted-Python mailing list