2012-05-16 7 views
9

Quando eseguo il mio file server python simplehttpwebsite.py nella shell di linux e controllo + c ed eseguo di nuovo, ricevo socket.error: [Errno 98] Address already in use.Un semplice server python che utilizza SimpleHTTerver e SocketServer, come posso chiudere il socket prima di eseguire nuovamente il file .py?

Come si assicura che il socket si chiuda quando faccio ctrl + c?

simplehttpwebsite.py

#!/usr/bin/env python 
import SimpleHTTPServer 
import SocketServer 

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler 
server = SocketServer.TCPServer(('0.0.0.0', 8080), Handler) 

server.serve_forever() 
+1

Possibile duplicato: http://stackoverflow.com/questions/4465959/python-errno-98-address-already-in-use – freakish

+1

@freakish: stessa causa sì, ma soluzione diversa all'interno del framework 'SocketServer' –

risposta

13

Ecco come si fa

#!/usr/bin/env python 
import SimpleHTTPServer 
import SocketServer 

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler 
class MyTCPServer(SocketServer.TCPServer): 
    allow_reuse_address = True 
server = MyTCPServer(('0.0.0.0', 8080), Handler) 

server.serve_forever() 

IMHO questo non è molto ben documentato, e dovrebbe sicuramente essere il default.

Problemi correlati