Got it, thanks.

On Aug 25, 11:50 am, Alkis Evlogimenos ('Αλκης Ευλογημένος)
<evlogime...@gmail.com> wrote:
> @retry_on_timeout(retries=10, secs=0.2)
> def some_idempotent_function():  # do stuff
>
> If you do not give retries or secs it defaults to 3 retries with 1 sec
> starting delay. The delay is exponential, it doubles after each retry.
>
> 2009/8/25 Devel63 <danstic...@gmail.com>
>
>
>
>
>
> > Can you give an example as to how this is used?  I understand the
> > purpose, I'm just a little hazy on the calling syntax.
>
> > On Aug 24, 5:25 am, Alkis Evlogimenos ('Αλκης Ευλογημένος)
> > <evlogime...@gmail.com> wrote:
> > > You can make it into a decorator which will make it easier for your
> > > functions to code. I use this:
> > > def retry_on_timeout(retries=3, secs=1):
> > >   """A decorator to retry a given function performing db operations."""
> > >   def _decorator(func):
> > >     def _wrapper(*args, **kwds):
> > >       tries = 0
> > >       while True:
> > >         try:
> > >           tries += 1
> > >           return func(*args, **kwds)
> > >         except db.Timeout, e:
> > >           logging.debug(e)
> > >           if tries > retries:
> > >             raise e
> > >           else:
> > >             wait_secs = secs * tries ** 2
> > >             logging.warning("Retrying function %r in %d secs" % (func,
> > > wait_secs))
> > >             time.sleep(wait_secs)
> > >     return _wrapper
> > >   return _decorator
>
> > > On Mon, Aug 24, 2009 at 1:53 PM, Bemmu <bemmu....@gmail.com> wrote:
>
> > > > I decided to finally do something about the Timeout exceptions
> > > > littering my log.
>
> > > > I read somewhere on this forum that I am supposed to code around data
> > > > store accesses to try things out several times in case of timeouts. Is
> > > > this still necessary? Why won't the methods just do that internally?
>
> > > > This is my first attempt to handle a timeout situation, is there any
> > > > nicer way to code this?
>
> > > >        retries = 3
> > > >        retry = True
> > > >        while retry:
> > > >                try:
> > > >                        retry = False
> > > >                        recipient.put()
> > > >                except:
> > > >                        retries -= 1
> > > >                        if retries > 0:
> > > >                                retry = True
> > > >                                logging.info("recipient.put() failed,
> > > > retrying")
> > > >                        else:
> > > >                                logging.error("failed even after trying
> > > > recipient.put() three
> > > > times")
>
> > > --
>
> > > Alkis
>
> --
>
> Alkis
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to