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

Python Discussion :

RPCError et TimeOut


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Par défaut RPCError et TimeOut
    Bonjour la communauté,
    je cherche à me connecter à un appareil de mesure en ethernet afin d'envoyer des commandes SCPI.
    Si l'adresse IP est bonne tt se passe bien. par contre s'il y a une erreur, je me retrouve avec :
    raise RPCError('can\'t connect to server')
    pyvisa-py.protocols.rpc.RPCError: can't connect to server
    et
    res.open(access_mode, open_timeout)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try:
        rm = visa.ResourceManager('@py')
        N9918A = rm.open_resource('TCPIP::xxx.xxx.xxx.xxx::INSTR')
        print(N9918A.query('*IDN?'))
    except ConnectionError:
        print("erreur adresse IP")
    pour gérer ce que je suppose être une exeception, j'ai essayé différents arguments (timeout, RuntimeError,....) mais rien qui fonctionne.
    Une idée?
    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Logiquement except rm.RPCError: mais ceci permet de connaître les différents types d'erreurs possibles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    except Exception as why:
        print("Connection error: %s" % why)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Logiquement except rm.RPCError: mais ceci permet de connaître les différents types d'erreurs possibles:
    [code]
    Non pas chez moi, c'est tjrs la meme erreur

    Par contre ça fonctionne nikel. quelle est la différence? est-ce plus "Bourrin" dans le sens ou quelque soit l'exception ça rentre dans la boucle?
    le why me donne
    Connection error: can't connect to server
    ce qui me semble normal vue qu'il n'y a pas la bonne adresse IP

    Merci, j'attends eventuellement une réponse avant de mettre résolu, mais dans les fait ça l'est.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 130
    Par défaut
    Il vaut mieux éviter car toutes les erreurs sont interceptées, même le KeyboardInterrupt (crl+c) .
    Essayez d'identifier le type d'erreur, si ce n'est pas 'rm.RPCError', vous pouvez essayer de trouver la quelle c'est soit:
    1) en lisant la doc...
    2) sans encapsuler votre code dans un try / except afin de faire afficher l'exception, et son type.

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Citation Envoyé par robinechuca Voir le message
    Il vaut mieux éviter car toutes les erreurs sont interceptées, même le KeyboardInterrupt (crl+c) .
    C'est exactement le but lorsque l'on ignore les type d'erreurs possibles.

    Mais:
    raise RPCError('can\'t connect to server')
    pyvisa-py.protocols.rpc.RPCError: can't connect to server
    semble dire que RPCError est le type que l'on cherche, non ?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 130
    Par défaut
    C'est exactement le but lorsque l'on ignore les type d'erreurs possibles.
    Oui en effet, mais je ne crois pas que vouloir tout ignorer soit très recommandé, c'est en tout cas ce que dit 'pylint', 'pycharm' et mes heures passées à chercher des problèmes cachés par des excepts trop large.

    Justement, on essai de ne pas les mettre toutes dans le même panier, si une erreur est fréquemment générée, ici "RPCError", et que la raison est clairement identifiée.
    Ici Ip mauvaise. Et bien on peut traiter cette erreur particulièrement. Mais il ne faut les traiter qu'une à la fois. Si par exemple vous avez un problème d’accès internet, le code renverra probablement un socket.error.
    Si vous récupérez seulement "RPCError", votre code plantera et vous serez informé que votre internet est coupé. Si vous récupérer toutes les erreurs, votre code continua et vous avertira que votre ip est mauvaise!
    Cela rend très rapidement le code indébogable!

    Plutôt que
    except rm.RPCError:
    vous pouvez essayer "except RPCError:" ou "except rpc.RPCError:" ou "except protocols.rpc.RPCError:", cela dépend de la façon dont vous avez importé le module ...

    Persiste dans l'idée de VinsS de vouloir sélectionner l'erreur spécifique, Il semblerai que "rm.RPCError" ne soit pas la bonne façon d’accéder à la class "RCPError".
    On pourrai peut être t'aider plus précisément si tu nous donne la façon dont tu as importé le/les module/s .

Discussions similaires

  1. [TOMCAT] Problème de timeout d'une servlet
    Par tuxor dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 18/09/2007, 12h04
  2. Alter Session : question de TimeOut
    Par Filippo dans le forum Administration
    Réponses: 4
    Dernier message: 13/05/2004, 17h42
  3. [JSP]recuperer session-timeout dans web.xml
    Par seb_fou dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/05/2004, 16h01
  4. [Sockets] Timeout sur accept() ?
    Par MikB dans le forum Développement
    Réponses: 2
    Dernier message: 30/12/2003, 17h22
  5. Ftp login & Timeout
    Par MSP dans le forum Modules
    Réponses: 6
    Dernier message: 29/08/2003, 12h55

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