python

Python装饰器如何实现重试机制

小樊
84
2024-11-02 05:25:16
栏目: 编程语言

在Python中,装饰器是一种修改或扩展函数行为的方法。要实现重试机制,你可以创建一个装饰器函数,该函数接受一个函数作为参数,并返回一个新的函数,这个新函数在执行原始函数时会尝试多次执行原始函数,直到达到最大尝试次数。

以下是一个简单的重试机制装饰器的实现:

import functools
import time

def retry(max_retries, delay=1):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            retries = 0
            while retries < max_retries:
                try:
                    return func(*args, **kwargs)
                except Exception as e:
                    print(f"Error occurred: {e}")
                    retries += 1
                    time.sleep(delay)
            raise Exception(f"Failed to execute {func.__name__} after {max_retries} retries")
        return wrapper
    return decorator

# 使用装饰器
@retry(max_retries=3, delay=2)
def example_function():
    print("Executing example_function")
    # 这里可以放置可能引发异常的代码
    raise ValueError("An error occurred")

# 调用函数
try:
    example_function()
except Exception as e:
    print(e)

在这个例子中,retry装饰器接受两个参数:max_retries表示最大尝试次数,delay表示每次尝试之间的延迟(以秒为单位)。decorator函数是实际的装饰器,它接受一个函数func作为参数,并返回一个新的函数wrapperwrapper函数在执行func时,会尝试多次执行func,直到达到最大尝试次数。如果在尝试过程中发生异常,wrapper函数会捕获异常并等待指定的延迟时间,然后再次尝试执行func。如果所有尝试都失败了,wrapper函数会抛出一个新的异常,表示原始函数执行失败。

0
看了该问题的人还看了