Correct, sorry, tried: return ( self.abc1(). addErrback(self.handleFailure1). addCallback(self.abc2,args). addCallback(self.abc3). addErrback(self.handleFailure2) )
def abc1(self): if t.test() is None: raise Exception("Error11") else: d = defer.Deferred() d.callback(1) return d Still in case of exception from abc1() - self.handleFailure1() never called, instead of it abc1() just fail. Do I need "raise Exception("Error11")" also return as deferred ? Than how? Quoting "Valeriy Pogrebitskiy" <vpogr...@verizon.net>: > After taking closer look at your code - this is obvious... > > To use callbacks - you MUST use deferred. In your case - each method in a > chain (except the last one) must return deferred. Without that - you can't > construct such chain. > > Your abc1() and abc2() must return deferred (or be decorated by a method > that returns deferred)... > > Kind regards, > > Valeriy Pogrebitskiy > Email: vpogr...@iname.com > > > > -----Original Message----- > From: twisted-python-boun...@twistedmatrix.com > [mailto:twisted-python-boun...@twistedmatrix.com] On Behalf Of > vit...@synapticvision.com > Sent: Thursday, October 22, 2009 6:38 PM > To: twisted-python@twistedmatrix.com > Subject: Re: [Twisted-Python] How to chain deferred calls > > > me too, > may be its because of the way I'm calling the chain: > > return ( > self.abc1(). > addErrback(self.handleFailure1). > addCallback(self.abc2,args). > addCallback(self.abc3). > addErrback(self.handleFailure2) > ) > > I see no call to self.handleFailure1() at all, abc1() just fail on > exception (if it was raised). > > Quoting "Valeriy Pogrebitskiy" <vpogr...@verizon.net>: > >> I am confused... If an exception is being raised in adc1() - errback is >> supposed to be called and passed your Exception instance (wrapped up as an >> instance of twisted.python.failure.Failure). >> >> Kind regards, >> >> Valeriy Pogrebitskiy >> Email: vpogr...@iname.com >> >> >> -----Original Message----- >> From: twisted-python-boun...@twistedmatrix.com >> [mailto:twisted-python-boun...@twistedmatrix.com] On Behalf Of >> vit...@synapticvision.com >> Sent: Thursday, October 22, 2009 2:02 PM >> To: twisted-python@twistedmatrix.com >> Subject: Re: [Twisted-Python] How to chain deferred calls >> >> >> Thank you for response. >> >> the issue is if adc1() will raise up an exception, than following it >> .addErrback() will never be called cause adc1() will exit or raise >> Exception. >> >> Quoting "Valeriy Pogrebitskiy" <vpogr...@verizon.net>: >> >>> Add another .addErrback() directly after adc1() - to handle that >>> specific exception... >>> >>> >>> Kind regards, >>> >>> Valeriy Pogrebitskiy >>> vpogr...@verizon.net >>> >>> >>> >>> >>> On Oct 21, 2009, at 4:12 PM, vit...@synapticvision.com wrote: >>> >>>> hi, >>>> how can I chain in defer methods that could raise exception while >>>> showing the exception that coming from method? I mean, if I'll do: >>>> return ( >>>> adc1().abc2().abc3().addErrback("Common2AllException") >>>> ) >>>> than "Common2AllException" will be raised if abc1() raise Exception, >>>> but I'd like to see the adc1() own exception (and not >>>> "Common2AllException") ? >>>> >>>> >>>> >>>> t = Test() >>>> def abc1(self): >>>> if t.test() is None: >>>> raise Exception("Error11") >>>> else: >>>> return 1 >>>> >>>> def abc2(self): >>>> if t.test() is None: >>>> raise Exception("Error12") >>>> else: >>>> return 1 >>>> >>>> def abc3(self): >>>> if t.test() is None: >>>> raise Exception("Error13") >>>> else: >>>> return 1 >>>> >>>> >>>> >>>> >>>> Appreciate the help. >>>> >>>> >>>> _______________________________________________ >>>> Twisted-Python mailing list >>>> Twisted-Python@twistedmatrix.com >>>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >>> >>> >>> _______________________________________________ >>> Twisted-Python mailing list >>> Twisted-Python@twistedmatrix.com >>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >>> >> >> >> >> _______________________________________________ >> Twisted-Python mailing list >> Twisted-Python@twistedmatrix.com >> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >> >> >> _______________________________________________ >> Twisted-Python mailing list >> Twisted-Python@twistedmatrix.com >> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >> > > > > _______________________________________________ > Twisted-Python mailing list > Twisted-Python@twistedmatrix.com > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python > > > _______________________________________________ > Twisted-Python mailing list > Twisted-Python@twistedmatrix.com > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python > _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python