Résolue

Requêtes API

# Boucles # API # Scripting

Bonjour à tous.


Je suis en train de tester des connexions avec une API dans un script, et j'essaie de gérer les différentes exceptions (timeout et autres).

J'en profite pour mieux me familiariser avec le continue et break dans les boucles for.


Voici mon code, que vous me disiez ce que vous en pensez, ce que vous faites plutôt (ou feriez). Ouvert à toutes critiques!  🙃

Ici, je fais 3 tentatives de connexion. Tout serait ensuite loggé.

```

import time
import requests
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

for i in range(1, 4):
    try:
        r = requests.get('http://192.168.1.1', verify=False, timeout=1)
        if r.status_code != 200:
            # LOGGER(f"status connection: {r.status_code}")
print(f'Connection refused: attempt {i}')
            time.sleep(5)
            continue
# LOGGER("status connection: 200")
print(f'Connection succeeded: attempt {i}')
        break
except requests.Timeout:
        # LOGGER("Connection timeout: site unreachable")
print('timeout')

print('End script')


Merci d'avance pour vos retours!

Bonsoir David,


Si vous souhaitez améliorer votre code, vous pouvez supprimer le mot-clé continue et ajouter un else.


import time
import requests
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

for i in range(1, 4):
    try:
        r = requests.get('http://192.168.1.1', verify=False, timeout=1)
        if r.status_code != 200:
            print(f'Connection refused: attempt {i}')
            time.sleep(5)
        else:
            print(f'Connection succeeded: attempt {i}')
            break
except requests.Timeout:
        print('timeout')

print('End script')


Sinon, il faut savoir que les mot-clés continue et break ne sont pas forcément recommandés car ils rendent le code plus difficile à comprendre. C'est pour cela que mettre la boucle dans une fonction et remplacer le mot-clé break par return serait pour moi la meilleure amélioration.


Bien cordialement.

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.