decoratorApi.py 709 B

12345678910111213141516171819202122232425262728293031323334353637
  1. """
  2. @author: luojunhui
  3. """
  4. import time
  5. def retryOnNone():
  6. """
  7. 基于None类型数据的重试装饰器
  8. :return:
  9. """
  10. def decorator(func):
  11. """
  12. :param func:
  13. :return:
  14. """
  15. max_retries = 10
  16. wait_seconds = 1
  17. def wrapper(*args, **kwargs):
  18. """
  19. :param args:
  20. :param kwargs:
  21. :return:
  22. """
  23. for attempt in range(max_retries):
  24. response = func(*args, **kwargs)
  25. if response['data'] is not None:
  26. return response
  27. time.sleep(wait_seconds)
  28. return None
  29. return wrapper
  30. return decorator