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

Reply via email to