try-except inside a loop

前端 未结 2 1261
伪装坚强ぢ
伪装坚强ぢ 2020-12-30 13:34

I need to invoke method f. If it raises an IOError, I need to invoke it again (retry), and do it at most three times. I need to log any other excep

2条回答
  •  清酒与你
    2020-12-30 14:04

    You can write a retry decorator:

    import time
    
    def retry(times=3, interval=3):
        def wrapper(func):
            def wrapper(*arg, **kwarg):
                for i in range(times):
                    try:
                        return func(*arg, **kwarg)
                    except:
                        time.sleep(interval)
                        continue
                raise
            return wrapper
        return wrapper
    
    
    //usage
    @retry()
    def fun():
        import inspect; print inspect.stack()[0][3]
        return "result"
    
    print fun()
    

提交回复
热议问题