IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Programme qui plante à la lecture d'une URL


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2020
    Messages : 6
    Par défaut Programme qui plante à la lecture d'une URL
    Bonjour à toutes et tous,

    Depuis un moment je "coince" sur un problème tout bête : j'ai un serveur WEB sur une carte Arduino qui envoie un fichier HTML "basique". Je l'interroge via un programme Python. Tout fonctionne bien... sauf que le programme Python plante parfois ( tous les 2-3 jours alors que l'on interroge le serveur toutes les 10 minutes). L'interrogation se fait avec une Raspberry Py et j'ai cru que le problème était au niveau de la carte... mais je viens de faire des tests depuis le PC avec un code Python minimum (et en augmentant la cadence de lecture) et le problème subsiste. J'ai essayé de mettre une détection d'erreur avec un try... mais il plante toujours et ne signale rien. Lorsqu'il plante sur le PC (Spyder sous Windows) il faut restarter Spyder pour pouvoir reprendre la main.
    Voici le code en question, les prints ne sont là que pour savoir où il se plante... et je constate que c'est à l'ouverture de l'URL. De plus, je suis sûr que ce n'est pas mon serveur qui est HS car je peux accéder à l'URL en question depuis un navigateur lorsque le programme Python est planté.

    Est-ce que vous avez déjà eu ce type de problème... ou avez-vous des pistes à explorer... car là, moi je sèche...

    Merci d'avance pour votre aide !

    A+

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import urllib.request
    import time
     
     
    while(True) :
                #Lecture des paramètres piscine
                    try:
                        page=urllib.request.urlopen('http://192.168.1.113')
                        print("URL OK")
     
                    except:
                        print("erreur d'ouverture de la page")
     
                    else:
                        try:
     
                            strpage=str(page.read())
                            print(strpage)
                        except:
                            print("erreur de lecture de la page")
                        else:
                            time.sleep(10)

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par geraldhuguenin Voir le message
    Est-ce que vous avez déjà eu ce type de problème... ou avez-vous des pistes à explorer... car là, moi je sèche...
    Le propre de la programmation réseau est que les requêtes peuvent ne pas aboutir et qu'il faut gérer différents erreurs en fonction de leur type.
    note: ce qui veut dire regarder le type de l'erreur et non se contenter d'afficher erreur quelque soit son type.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    En plus de regarder plus précisément le message d'erreur comme le dit wiztricks, regarde aussi si le plantage pourrait être provoqué par un "timeout" puisqu'il peut y avoir dans les réseaux des temps d'attente aléatoires.
    Éventuellement, met un timeout=10 (pour 10 secondes) à l'appel de urlopen, selon la doc:
    https://docs.python.org/fr/3/library...urllib.request

    Et voir ici pour une gestion plus fine des erreurs:
    https://stackoverflow.com/questions/...ut-in-python-3

  4. #4
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2020
    Messages : 6
    Par défaut
    Merci à vous deux pour vos pistes... j'essaye tout ça et vous redis !

    Bonne soirée

    A+

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2020
    Messages : 6
    Par défaut
    Bien vu !!
    Il semble que ce soit le TIMEOUT. J'ai mis TIMEOUT = 10 et j'ai maintenant le message d'erreur "erreur d'ouverture de la page" qui apparaît quelques fois (il ne sortait jamais avant !)
    Je vais encore laisser tourner quelques heures pour être sûr... mais c'est bien parti !
    Merci encore et je vous redonne des nouvelles dans quelques temps

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par geraldhuguenin Voir le message
    Il semble que ce soit le TIMEOUT. J'ai mis TIMEOUT = 10 et j'ai maintenant le message d'erreur "erreur d'ouverture de la page" qui apparaît quelques fois (il ne sortait jamais avant !)
    Pourquoi il semble? Le message d'erreur devrait l'indiquer.
    Et pour gérer un timeout, certes vous pouvez attendre plus longtemps (ce qui n'est pas une bonne idée puisque vous ne pouvez rien faire d'autre) mais vous pouvez aussi recommencer un peu plus tard.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programme qui plante quand je passe une string.
    Par z980x dans le forum SL & STL
    Réponses: 4
    Dernier message: 23/01/2009, 00h40
  2. Réponses: 2
    Dernier message: 05/07/2006, 15h21
  3. Faire un programme qui plante et noter le plantage
    Par cedricgirard dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 16h36
  4. Réponses: 12
    Dernier message: 21/02/2006, 11h47
  5. Programme qui plante
    Par harris_macken dans le forum C++
    Réponses: 1
    Dernier message: 22/05/2005, 23h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo