I would fiddle around with something like this.
from twisted.internet.defer import inlineCallbacks, returnValue, Deferred
from twisted.internet import reactor
@inlineCallbacks
def foo(self, retries=10, interval=10):
while True:
try:
returnValue((yield self.get_handle()))
except SystemDelayException as e:
if retries > 0:
retries -= 1
d = Deferred()
reactor.callLater(interval, d.callback, None)
yield d
else:
raise e
On Wed, Sep 3, 2014 at 1:32 PM, vikas kumar <[email protected]>
wrote:
> Hi,
>
> I am little new to twisted.
> I've a function(get_handle) which returns a handle.
>
> But get_handle() may throw an exception(SystemDelayException) because of
> some delay in system.
> My requirement is : When I get SystemDelayException re-attempt
> get_handle() and return only when handle is available. How do I use
> deferred/reactor in this scenario?
>
> try:
> handle = yield self.get_handle()
> except SystemDelayException:
> // code to re-attempt get_handle and return only when handle is
> available
>
> Regards
> Vikas
>
>
> _______________________________________________
> Twisted-Python mailing list
> [email protected]
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
_______________________________________________
Twisted-Python mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python