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
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.
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
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
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.