import requests
from retry.api import retry_call
def make_trouble(service, info=None):
if not info:
info = ''
print ('retry..., service: {}, info: {}'.format(service, info))
r = requests.get(service + info)
print r.text
raise Exception('info')
def what_is_my_ip(approach=None):
if approach == "optimistic":
tries = 1
elif approach == "conservative":
tries = 3
else:
# skeptical
tries = -1
result = retry_call(make_trouble, fargs=["http://ipinfo.io/"], fkwargs={"info": "ip"}, tries=tries)
print(result)
if __name__ == '__main__':
import logging
logging.basicConfig()
what_is_my_ip("conservative")
输出:
retry..., service: http://ipinfo.io/, info: ip
118.113.1.255
retry..., service: http://ipinfo.io/, info: ip
WARNING:retry.api:info, retrying in 0 seconds...
WARNING:retry.api:info, retrying in 0 seconds...
118.113.1.255
retry..., service: http://ipinfo.io/, info: ip
Traceback (most recent call last):
File "E:/WORKSPACE/document/document/test/1.py", line 74, in <module>
what_is_my_ip("conservative")
File "E:/WORKSPACE/document/document/test/1.py", line 66, in what_is_my_ip
result = retry_call(make_trouble, fargs=["http://ipinfo.io/"], fkwargs={"info": "ip"}, tries=tries)
File "D:\python27\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\lib\site-packages\retry\api.py", line 101, in retry_call
return __retry_internal(partial(f, *args, **kwargs), exceptions, tries, delay, max_delay, backoff, jitter, logger)
File "D:\python27\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\lib\site-packages\retry\api.py", line 33, in __retry_internal
return f()
File "E:/WORKSPACE/document/document/test/1.py", line 54, in make_trouble
raise Exception('info')
Exception: info
118.113.1.255