Lors de la création d'un BOT de trading automatique pour la monnaie virtuelle Lors de l'utilisation de l'API de l'échange, des erreurs sont fréquemment détectées côté échange. La gestion des exceptions a été implémentée comme contre-mesure. Je vais le laisser comme mémo pour moi-même pour ne pas l'oublier.
C'est une simple contre-mesure telle que "erreur de serveur". Même si votre code est correct, vous pouvez toujours obtenir une erreur lors de l'exécution. Par exemple, lorsque vous faites une demande à un serveur externe, le serveur est occupé ou Par exemple, si le serveur ne fonctionne pas en raison d'une maintenance temporaire Une erreur de serveur (code d'erreur) etc. sera renvoyée comme résultat de la réponse. Surtout pour les programmes qui s'exécutent automatiquement, tels que le trading automatique BOT Ce serait un problème s'il était arrêté à chaque fois en raison d'une erreur du serveur. .. .. (Ce n'est plus un BOT de trading automatique)
En guise de contre-mesure, vous pouvez éviter les erreurs inattendues en écrivant une instruction «try-except» (gestion des exceptions).
Vous pouvez voir si vous avez obtenu la bonne réponse à l'écureuil en regardant le code d'état HTTP. Ce qui suit fait partie du code d'état HTTP, et la classification principale est comme ça. J'ai souvent renvoyé des erreurs dans les années 500.
--100s: Traitement --200s: succès --300s: redirection -400 series: erreur client --500s: erreur de serveur
sample.py
response = requests.get("https://***********")
print(response.status_code)
Vous pouvez vérifier le code d'état HTTP avec Response object .status_code
comme le code ci-dessus.
sample.py
try:
response = requests.get("https://***********")
response.raise_for_status() #
print(response.status_code)
except requests.exceptions.RequestException as e:
print("Erreur: ",e)
Une exception peut se produire dans la partie try:
, mais le processus que vous souhaitez exécuter
Décrivez le traitement lorsqu'une exception se produit dans la partie ʻexcept: `.
Dans le cas du code ci-dessus, la communication de la demande est effectuée vers le serveur externe par la méthode GET et le résultat de la réponse est
Vérifiez le code d'état HTTP avec la méthode rise_for_status ()
, et s'il est dans les années 200, seule la partie try:
sera exécutée.
Au contraire, si le code d'état HTTP est différent des 200, on considère qu'une exception s'est produite.
ʻSauf: `La partie est exécutée.
La méthode rise_for_status ()
vérifie si le code d'état HTTP est dans les 200 et
S'il n'est pas dans les années 200, il lève une exception, c'est-à-dire qu'il crache une erreur et s'arrête.
except est écrit comme sauf le type d'exception comme nom de variable:
Les objets d'exception (tels que les messages d'erreur) peuvent être stockés et utilisés dans des variables.
N'importe quel nom peut être spécifié pour le nom de la variable, mais il est courant d'écrire ʻe ou ʻerr
.
Vous pouvez vérifier les détails de l'erreur en générant la variable.
Pour les types d'exception, recherchez «gestion des exceptions de nom de bibliothèque», «gestion des erreurs de nom de bibliothèque», etc.
La plupart du temps, vous voudrez peut-être savoir.
sample.py
try:
response = requests.get("https://***********")
response.raise_for_status()
except requests.exceptions.RequestException as e:
print("Erreur: ",e)
else:
print("Traité avec succès")
Dans la partie ʻelse: , décrivez le traitement à effectuer après l'achèvement normal sans exception. Si une exception se produit et que la partie ʻexcept:
est exécutée, la partie ʻelse:` n'est pas exécutée.
sample.py
try:
response = requests.get("https://***********")
response.raise_for_status()
except requests.exceptions.RequestException as e:
print("Erreur: ",e)
else:
print("Traité avec succès")
finally:
print("Toujours traiter à la sortie")
Dans la partie finally:
, décrivez le processus que vous souhaitez exécuter à la fin, quelle que soit l'occurrence d'une exception.
Vous pouvez également utiliser ʻelse: et
finally: en même temps. Au moment de la fin normale, le processus de
finally:est exécuté après que le processus de ʻelse:
soit exécuté.
Recommended Posts