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 : 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
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