no1*_*bus 4 python python-requests
这是我的代码.
import requests,time
proxies = {'http':'36.33.1.177:21219'}
url='http://218.94.78.61:8080/newPub/service/json/call?serviceName=sysBasicManage&methodName=queryOutputOtherPollutionList¶msJson=%7B%22ticket%22:%22451a9846-058b-4944-86c6-fccafdb7d8d0%22,%22parameter%22:%7B%22monitorSiteType%22:%2202%22,%22enterpriseCode%22:%22320100000151%22,%22monitoringType%22:%222%22%7D%7D'
i = 0
a = requests.adapters.HTTPAdapter(max_retries=10)
s = requests.Session()
s.mount(url, a)
for x in xrange(1,1000):
time.sleep(1)
print x
try:
r= s.get(url,proxies=proxies)
print r
except Exception as ee:
i = i + 1
print ee
print 'i=%s' % i
Run Code Online (Sandbox Code Playgroud)
代理有点不稳定,所以我设置了max_retries,但它有时候仍然有异常,所以在每次重试后有一些secondes执行的方法吗?
avi*_*avi 11
只是requests图书馆,这是不可能的.但是,您可以使用外部库,如退避.
backoff提供一个装饰器,你将它包装在你的功能周围.示例代码:
@backoff.on_exception(backoff.constant,
requests.exceptions.RequestException,
max_tries=10, interval=10)
def get_url(url):
return requests.get(url)
Run Code Online (Sandbox Code Playgroud)
上面的代码等待10秒,以便在每次例外时进行下一次重试,requests.exceptions.RequestException并尝试10次,如中所述max_tries.