- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # tanyewei@gmail.com
- # 2014/01/27 10:36
- import time
- import logging
- import socket
- from functools import wraps
- logging.basicConfig(level=logging.DEBUG)
- def retry(MyException, tries=4, delay=3, backoff=2, logger=None):
- def deco_retry(f):
- @wraps(f)
- def f_retry(*args, **kwargs):
- mtries, mdelay = tries, delay
- while mtries > 1:
- try:
- return f(*args, **kwargs)
- except MyException as ex:
- msg = "%s, Retrying in %d seconds..." % (str(ex), mdelay)
- if logger:
- logger.warning(msg)
- else:
- print msg
- time.sleep(mdelay)
- mtries -= 1
- mdelay *= backoff
- return str(ex)
- return f_retry
- return deco_retry
- @retry(Exception, logger=logging)
- def check():
- sk = socket.socket()
- sk.settimeout(5)
- sk.connect(('6.6.6.6', 80))
- if __name__ == "__main__":
- check()
- #该片段来自于http://www.codesnippet.cn/detail/130220148711.html
来源: http://www.codesnippet.cn/detail/130220148711.html