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 :

poplib : le programme bloque si coupure internet [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Par défaut poplib : le programme bloque si coupure internet
    Bonjour,

    J'utilise poplib afin de récupérer des informations sur une boite gmail. Tout fonctionne bien excepté lorsqu'il y a une coupure internet, ce qui bloque mon programme à certains moments. Cela semble se produire à chaque fois que la variable "mServer" est utilisée afin d'effecter une requête (listage des mails, récupération du sujet du mail, quitter le serveur...).

    Par exemple, dans mon code ci-dessous, si la coupure a lieu à la ligne "mServer.user(login_mail)" le programme n'avance plus. J'attends 15 min, toujours rien, pas d'erreurs, de messages...le programme semble être en attente. Puis je relance internet et rien ne se produit de plus, toujours en attente. Ceci est vrai pour chaque ligne ou "mServer" est utilisée, excepté à la première ligne du code ( mServer = poplib.POP3_SSL('pop.gmail.com') ) où l'exception est gérée s'il n'y a pas de connexion internet.

    J'ai donc besoin de trouver une solution afin que le programme se poursuive ou bien qu'une erreur soient générée afin que le programme puisse avancer.

    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
    23
    24
    #On se connecte à la boîte mail :
    try:
        mServer = poplib.POP3_SSL('pop.gmail.com')
    except:
        print "connexion impossible"
     
    try:
        mServer.user(login_mail)
    except:
        print "pas de connexion 1"
     
    try:
        mServer.pass_(mdp_mail)
    except:
        print "pas de connexion 2"
     
    #On récupère le nombre de mail :
    try:
        numMessages = len(mServer.list()[1])
     
        print "Vous avez %d messages." % (numMessages) 
        print "Liste des messages :"                
    except:
        print "pas de connexion 3"

    Merci pour votre aide.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Salut,

    A priori, vous voudriez que la socket parte en timeout si çà ne répond pas après un certain temps.
    Je n'ai pas essayé mais, vous pourriez ajouter ce timeout en ajoutant juste après l'ouverture de la connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #On se connecte à la boîte mail :
    try:
        mServer = poplib.POP3_SSL('pop.gmail.com')
    except:
        print "connexion impossible"
    mServer.sock.settimeout(2.0)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    A priori, vous voudriez que la socket parte en timeout si çà ne répond pas après un certain temps.
    Je n'ai pas essayé mais, vous pourriez ajouter ce timeout en ajoutant juste après l'ouverture de la connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #On se connecte à la boîte mail :
    try:
        mServer = poplib.POP3_SSL('pop.gmail.com')
    except:
        print "connexion impossible"
    mServer.sock.settimeout(2.0)
    - W
    Bonjour,

    Vous avez très bien compris ma question et vous y avez aussi très bien répondu. Effectivement, avec votre solution, mon programme ne bloque plus.

    Merci beaucoup et bonne année

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

Discussions similaires

  1. Programme bloqué par Windows Defender
    Par Francois C. dans le forum Sécurité
    Réponses: 7
    Dernier message: 25/08/2009, 07h53
  2. Boucle Do Programme bloque
    Par zentro dans le forum VB.NET
    Réponses: 4
    Dernier message: 28/02/2008, 17h02
  3. Controle des compte : programme bloqué
    Par pierrot10 dans le forum Windows Vista
    Réponses: 3
    Dernier message: 25/05/2007, 10h19
  4. Problème de coupures Internet chez Free
    Par apocalypse62 dans le forum Dépannage et Assistance
    Réponses: 40
    Dernier message: 15/05/2007, 11h59
  5. Réponses: 2
    Dernier message: 29/12/2005, 10h25

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