Maison > Questions et réponses > le corps du texte
迷茫2017-04-18 10:00:30
Dieu merci, je viens de trouver la solution
Un résumé de quelques techniques d'utilisation des robots d'exploration Python pour explorer des sites Web - Python - Bole Online http://python.jobbole.com/81997/ Le texte original est ici
def request(url, cookie='xxx', retries=5):
ret = urlparse.urlparse(url) # Parse input URL
if ret.scheme == 'http':
conn = httplib.HTTPConnection(ret.netloc)
elif ret.scheme == 'https':
conn = httplib.HTTPSConnection(ret.netloc)
url = ret.path
if ret.query: url += '?' + ret.query
if ret.fragment: url += '#' + ret.fragment
if not url: url = '/'
try:
conn.request(method='GET', url=url, headers={'Cookie': cookie})
res = conn.getresponse()
except Exception, e:
print e.message
if retries > 0:
return request(url=url, retries= retries - 1)
else:
print 'GET Failed'
return ''
else:
pass
finally:
pass
if res.status != 200:
return None
return res.read()
Le principe est d'utiliser une variable de tentatives pour stocker le nombre de tentatives, puis de se récurer et de définir le nombre de tentatives par -1 à chaque fois qu'une exception est gérée s'il est jugé que le nombre de tentatives est inférieur à. 0, revenez directement et imprimez un journal des échecs
大家讲道理2017-04-18 10:00:30
S'appeler récursivement pour effectuer un nombre de tentatives limité est la méthode la plus directe.
Mais il y a un problème :
Si l'adresse de l'autre partie échoue seulement temporairement, comme le redémarrage du service. La nouvelle tentative immédiate a toujours échoué. Le temps nécessaire pour réessayer 5 fois était très court. Lorsque le service de l'autre partie était prêt, la demande a été acceptée car elle a été réessayée 5 fois
Le mécanisme que j'utilise consiste à réessayer cinq fois, en attendant 30 secondes, 1 minute, 10 minutes, 30 minutes et 1 heure. S'il échoue toujours, il est considéré comme ayant échoué.
Bien entendu, cette utilisation repose sur une logique métier spécifique. Différents besoins commerciaux ont des exigences différentes en matière de demandes.