class ReactiveQueueTask(object): def __init__(self, func, args, kwargs): self.func = func self.args = args self.kwargs = kwargs self.deferred = Deferred() def __call__(self): return self.func(*self.args, **self.kwargs) def resolve(self, ret): self.deferred.callback(ret) def reject(self, error): self.deferred.errback(error)
def findNode(self, id, callback, errback=None): """ returns the contact info for node, or the k closest nodes, from the global table """ # get K nodes out of local table/cache, or the node we want nodes = self.table.findNodes(id, invalid=True) l = [x for x in nodes if x.invalid] if len(l) > 4: nodes = sample(l, 4) + self.table.findNodes(id, invalid=False)[:4] d = Deferred() if errback: d.addCallbacks(callback, errback) else: d.addCallback(callback) if len(nodes) == 1 and nodes[0].id == id: d.callback(nodes) else: # create our search state state = FindNode(self, id, d.callback, self.rawserver.add_task) self.rawserver.external_add_task(0, state.goWithNodes, nodes)
def findNode(self, id, callback, errback=None): """ returns the contact info for node, or the k closest nodes, from the global table """ # get K nodes out of local table/cache, or the node we want nodes = self.table.findNodes(id, invalid=True) l = [x for x in nodes if x.invalid] if len(l) > 4: nodes = sample(l , 4) + self.table.findNodes(id, invalid=False)[:4] d = Deferred() if errback: d.addCallbacks(callback, errback) else: d.addCallback(callback) if len(nodes) == 1 and nodes[0].id == id : d.callback(nodes) else: # create our search state state = FindNode(self, id, d.callback, self.rawserver.add_task) self.rawserver.external_add_task(0, state.goWithNodes, nodes)
from defer import Deferred __author__ = 'cqh' def myCallback(result): print result def myErrback(err): print err d=Deferred() d.add_callback(myCallback) #d.add_errback(myErrback) d.callback("Trigger callback.")
from defer import Deferred __author__ = 'cqh' def callback1(result): print "Callback 1 said:",result return result def callback2(result): print "Callback2 said:",result def callback3(result): raise Exception("Callback 3") def errback1(failure): print "Errback 1 had an an error on ,",failure return failure def errback2(failure): raise Exception("Errback 2") def errback3(failure): print "Errback3 took care of ",failure return "Everything is fine now." d=Deferred() d.add_callback(callback1) d.add_callback(callback2) d.add_callbacks(callback3,errback1) d.add_errback(errback3) d.callback("Test")