i have callback chain errback @ end. if of callbacks fail, need pass object used on errback.
how can pass object callback errback?
the following code exemplifies want do:
from twisted.internet.defer import failure twisted.internet import defer class codmsg(object): def __init__(self, code, msg): self.code = code self.msg = msg class resource(object): @classmethod def checkcondition(cls, result): if result == "error": cdm = codmsg(1, 'error 1') raise failure, cdm else: return "ok" @classmethod def erbacktst (cls, result): ####### how value of cdm here? ######## <<<=== print 'error:' print result return result d = defer.deferred() d.addcallback(resource.checkcondition) d.adderrback(resource.erbacktst) d.callback("error") print d.result
in case can raise exception, containing info need
for example:
from twisted.internet import defer class mycustomexception(exception): def __init__(self, msg, code): self.code = code self.message = msg def callback(result): print result raise mycustomexception('message', 23) def errback(failure): # failure.value exception instance raised in callback print failure.value.message print failure.value.code d = defer.deferred() d.addcallback(callback) d.adderrback(errback) d.callback("error")
also better understanding deffereds , async programming can read nice twisted tutorial http://krondo.com/an-introduction-to-asynchronous-programming-and-twisted/. uses little bit outdated twisted version in examples still exellent source start learning twisted