Python demandes de la bibliothèque de la gestion des exceptions
Je suis entrain de créer un service de téléchargement à l'aide de l'python demandes de la bibliothèque (Voir ici) pour télécharger des données à partir d'un autre serveur. Le problème est que parfois, je reçois un 503 error
et j'ai besoin d'afficher un message approprié. Voir l'exemple de code ci-dessous:
import requests
s = requests.Session()
response = s.get('http://mycustomserver.org/download')
Je peux vérifier de response.status_code
et obtenir le status code = 200
.
Mais comment puis-je try/catch
pour une erreur spécifique, dans ce cas, je veux être en mesure de détecter 503 error
et de les gérer de façon appropriée.
Comment dois-je faire?
Regarde le code: raw.githubusercontent.com/kennethreitz/requests/master/requests/..., il existe de nombreux codes d'erreur http, il n'y a pas de classe d'exception pour chacun, à la place il y en a pour toutes les erreurs http
OriginalL'auteur Frankline | 2014-06-16
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas le faire
Edit:
Il semble que les demandes de la bibliothèque sera également soulever une Exception pour vous, en utilisant
response.raise_for_status()
Edit2:
Vous envelopper
raise_for_status
avec le suivanttry/except
503 error
. Merci bien.Je vois ajoutée pertinentes
try/except
bloc.Merci. Votre dernière modification sert à mes besoins.
Comment voulez-vous vérifier pour toutes les erreurs au lieu de la liste un par un chaque. ? c'est à dire d'erreur http, mauvaise url erreur de, erreur de certificat ssl, etc.... est-il un gestionnaire d'exception générale qui couvrent toutes les erreurs? Ou je suis juste aller à ce sujet dans le mauvais sens?
Vous pourriez peut intercepter toutes les exceptions à l'aide de
except e:
et puis au fil du temps, mettre dans de multiples plus spécifiquescatch
es d'avoir un comportement unique pour chaque situation (si vous avez besoin de cours)OriginalL'auteur Martin Konecny
Vous pourriez aussi bien le faire:
response.raise_for_status()
soulève unrequests.exceptions.HTTPError
et ici, nous sommes seulement appelresponse.raise_for_status()
si le code d'état est égal à 503OriginalL'auteur K DawG