import urllib2
import urllib
import time
import logging
class HttpRequester(object):
def __init__(self):
self.__retryCount = 3
self.__retrySeconds = 5
def sendPostWithRetry(self, url, data, encoding):
count = 0
while(count<self.__retryCount):
try:
req = urllib2.Request(url, urllib.urlencode(data))
f = urllib2.urlopen(req)
if(f.getcode()==200):
return f.read().decode(encoding)
else:
count = count + 1
print('Retry after {0} seconds...'.format(str(self.__retrySeconds)))
time.sleep(5)
if(count>=self.__retryCount):
logging.ERROR('Has retried {0} times!!'.format(self.__retryCount))
raise Exception('Has retried {0} times!!'.format(self.__retryCount))
except Exception as e:
logging.warn(str(e))
return None
return None
def sendGetWithRetry(self, url, encoding):
count = 0
while(count<self.__retryCount):
try:
f = urllib2.urlopen(url)
if(f.getcode()==200):
return f.read().decode(encoding)
else:
count = count + 1
print('Retry after {0} seconds...'.format(str(self.__retrySeconds)))
time.sleep(5)
if(count>=self.__retryCount):
logging.ERROR('Has retried {0} times!!'.format(self.__retryCount))
raise Exception('Has retried {0} times!!'.format(self.__retryCount))
except Exception as e:
logging.error(str(e))
return None
return None
如需要將延時設成random,則
import random
def __init__(self):
self.__retryCount = 3
self.__retrySeconds = random.randint(1,60) #隨機1-60秒

