equal
deleted
inserted
replaced
1 from functools import partial |
1 from functools import partial |
2 |
|
3 from twisted.internet import defer |
2 from twisted.internet import defer |
|
3 from twisted.internet.defer import inlineCallbacks, returnValue |
4 |
4 |
5 from ..error import NoRoute, RejectRecipient |
5 from ..error import NoRoute, RejectRecipient |
6 |
6 |
7 from ..model.offer import getPossibleOffers |
7 from ..model.offer import offers |
8 from ..model.job import exJobs |
8 from ..model.job import exJobs |
9 |
9 |
10 from .pool import taskPool |
10 from .pool import taskPool |
11 |
11 |
12 class Task: |
12 class Task: |
21 self.d = taskPool.run(self._run) |
21 self.d = taskPool.run(self._run) |
22 self.d.addCallback(partial(self.job.setStatus,self)) |
22 self.d.addCallback(partial(self.job.setStatus,self)) |
23 self.d.addErrback(partial(self.job.setError,self)) |
23 self.d.addErrback(partial(self.job.setError,self)) |
24 return self.d |
24 return self.d |
25 |
25 |
|
26 @inlineCallbacks |
26 def _run(self): |
27 def _run(self): |
27 for offer in getPossibleOffers(self.recipient,self.job.offers): |
28 for offer in self.job.offers: |
28 try: |
29 try: |
29 return offer.send(self.recipient,self.job.message) |
30 ret = yield (offers[offer].send(self.recipient,self.job.message)) |
|
31 returnValue(ret) |
30 except RejectRecipient: |
32 except RejectRecipient: |
31 continue |
33 continue |
32 else: |
34 else: |
33 raise NoRoute() |
35 raise NoRoute() |
34 |
36 |