Existe-t-il un moyen de limiter le nombre de redirections que les requêtes python suivront lors de l'exécution d'un GET?

Je connais allow_redirects=False, mais c'est juste empêche les redirections tous ensemble. Je cherche un moyen de suivre les redirections, jusqu'à un nombre maximum de sauts.

# What I know how to do:
resp = requests.get(url)  # follows redirects "infinitely"
resp = requests.get(url, allow_redirects=False)  # follows no redirects

# What I'm trying to do:
resp = requests.get(url, max_redirects=3)  # follow up to 3 redirects

Merci!

6
ron rothman 22 juil. 2015 à 04:57

2 réponses

Meilleure réponse

Vous devez créer un objet Session et définir max_redirects variable à 3

session = requests.Session()
session.max_redirects = 3
session.get(url)

Une exception TooManyRedirects sera déclenchée si une requête dépasse le nombre maximal de redirections.

Problème lié à Github expliquant pourquoi vous ne pouvez pas définir max_redirects par requête https://github.com/kennethreitz/requests/ numéros / 1300

9
Alik 22 juil. 2015 à 03:04

Si vous souhaitez obtenir l'en-tête (ou d'autres informations) de la demande à l'origine de l'exception de limite de redirection maximale, vous pouvez faire comme ça:

session = requests.Session()
session.max_redirects = 1
try:
    r = session.post(url, headers=headers, params=querystring, data=payload)
except requests.exceptions.TooManyRedirects as exc:
    r = exc.response

Assurez-vous que vos demandes sont la dernière édition.

-1
Community 27 août 2018 à 12:50