执行结果:
代码如下:
warning:root:timed out, retrying in 3 seconds...
warning:root:timed out, retrying in 6 seconds...
warning:root:timed out, retrying in 12 seconds...
代码如下:
#!/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()
