iro/controller/task.py
branchdevel
changeset 243 b348d8f15b0a
parent 238 c36b117f7400
child 264 584b9c97ecfd
equal deleted inserted replaced
242:745d829d1e02 243:b348d8f15b0a
     1 from functools import partial
     1 from functools import partial
     2 
     2 
       
     3 from twisted.python import log
     3 from twisted.internet.defer import inlineCallbacks, returnValue, maybeDeferred, Deferred
     4 from twisted.internet.defer import inlineCallbacks, returnValue, maybeDeferred, Deferred
     4 
     5 
     5 from ..error import NoRouteForTask, RejectRecipient
     6 from ..error import NoRouteForTask, RejectRecipient
     6 
     7 
     7 from ..model.offer import offers
     8 from ..model.offer import offers
    42         def n():
    43         def n():
    43             try:
    44             try:
    44                 offer = os.next()
    45                 offer = os.next()
    45                 d = maybeDeferred(offers[offer],self.recipient,self.job.message)
    46                 d = maybeDeferred(offers[offer],self.recipient,self.job.message)
    46                 d.addCallback(self.d.callback)
    47                 d.addCallback(self.d.callback)
    47                 d.addErrback(addErr)
    48                 d.addErrback(addErr,offer)
    48                 d.addErrback(self.d.errback)
    49                 d.addErrback(self.d.errback)
    49                 return d
    50                 return d
    50             except StopIteration:
    51             except StopIteration:
    51                 self.d.errback(NoRouteForTask())
    52                 self.d.errback(NoRouteForTask())
    52 
    53 
    53         def addErr(failure):
    54         def addErr(failure, offer):
    54             failure.trap(RejectRecipient)
    55             if not isinstance(failure.value, RejectRecipient):  
    55             return n()
    56                 log.err(_why="Job(%s): Send to '%s' failed via '%s'"%(self.job.dbjob, self.recipient, offer),_stuff=failure)
       
    57             n()
    56         
    58         
    57         n()
    59         n()
    58 
    60 
    59 
    61 
    60 @inlineCallbacks
    62 @inlineCallbacks