Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Général Python
Général Python Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/01/2013, 13h01   #1
pierrot10
Débutant
 
Inscription : mai 2005
Messages : 2 066
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 2 066
Points : 641
Points : 641
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()
Citation:
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!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 13h45   #2
pierrot10
Débutant
 
Inscription : mai 2005
Messages : 2 066
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 2 066
Points : 641
Points : 641
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!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h26.


 
 
 
 
Partenaires

Hébergement Web