Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 253
    Points : 698
    Points
    698

    Par défaut Comment puis arreter mon listner proprement

    Bonjour à tous,

    J'ai ce code ui va ecouter les entrée sur le port 81.
    Quand il y a une valeur, soit il l'enregistre dans une base de donnée soit il retourne un petit message.

    J'aimerais que lorsqu'il il recoit le message, il arrete d'écouter le port 81 et rendre le prompt a l'utilisateur, sans message d'erruer.

    J'ai essyaé avec import sys, sys.exit(), mais j'ai un peté de message sans avoir le prompt.
    Que me recommanderiez-vous ?

    Voici mon code
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    from twisted.internet.protocol import Factory, Protocol
    from twisted.internet import reactor
     
    import time
    import _mysql
    import pprint
    import sys
     
    class SendContent(Protocol):
            def connectionMade(self):
                    print 'Accepted connection'
            def dataReceived(self, data):
                    if data.strip() == "bye":
                            print 'Bye';
                    elif data.strip() == "quit":
                            print "quit"
                            sys.exit()
                            print "quit" #ceci n'est pas affiché
                    else:
                            date = time.time()
                            values = data.split(',');
                            if len(values) != 4:
                                    print 'Error: Data must have 4 arguments separated with coma'
                            else:
                                    db = None;
                                    try:
                                            db = _mysql.connect('localhost', 'username','password','db')
                                            db.query("INSERT INTO tracker (date, speed, lat, lng, course)" + "VALUES ('" + str(date) + "', '" + str(values[0]) + "', '" + str(values[1]) + "', '" + str(values[2]) + "', '" + str(values[3]) + "')")
     
                                            print "---------------------"
                                            print "| Data Logged       |"
                                            print "---------------------"
                                            print "Speed: " + values[0]
                                            print "Latitude: " + values[1]
                                            print "Longitude: " + values[2]
                                            print "Course: " + values[3]
                                    except _mysql.Error, e:
                                            print "Error %d: %s" % (e.args[0], e.args[1])
                                    finally:
                                            if db:
                                                    db.close()
     
    class SendContentFactory(Factory):
            protocol = SendContent
     
    reactor.listenTCP(81, SendContentFactory())
    reactor.run()
    et voici le message que je recoit a cause de exit.quit()
    Unhandled Error
    Traceback (most recent call last):
    File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 84, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 69, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
    File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
    return func(*args,**kw)
    --- <exception caught here> ---
    File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 626, in _doReadOrWrite
    why = selectable.doRead()
    File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 203, in doRead
    return self._dataReceived(data)
    File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 209, in _dataReceived
    rval = self.protocol.dataReceived(data)
    Merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Débutant
    Profil pro
    Inscrit en
    mai 2005
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : mai 2005
    Messages : 2 253
    Points : 698
    Points
    698

    Par défaut

    Ben voilà, c'était pas si compliqué

    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •