2011-10-09 2 views
22

Sto cercando di imparare python (usando il micro-framework Flask) e sono confuso perché da qualche parte nel mio codice sto mantenendo il server aperto I credere.È necessario chiudere il socket Python/Trova il server corrente in esecuzione sul mio ambiente di sviluppo

Accelero il mio server con 'python app.py' e poi lo chiudo comunque .... vive ancora!

Non sono sicuro di come sia possibile, ma devo aver fatto qualcosa di sbagliato con una connessione.

Ci sono due domande qui.

Primo: Come posso trovare il collegamento attivo/presa e chiuderlo

Secondo: C'è un modo per diagnosticare ciò che sta avendo una connessione aperta, la mia impressione è che SqlLite non chiude come è l'ultima cosa che ho implementato.

Questa è un'applicazione a un file (meno un file di configurazione e contenuto statico) in modo da poter inserire il codice, se necessario.

errore generato (posizioni delle cartelle modificate):

/Development/flask_projects/test_email/env/bin/python /Development/flask_projects/test_email/app.py 
* Running on http://127.0.0.1:5000/ 
Traceback (most recent call last): 
    File "Development/flask_projects/test_email/app.py", line 58, in <module> 
    app.run() 
    File "Development/flask_projects/wtchn_email/env/lib/python2.7/site-packages/Flask-0.8-py2.7.egg/flask/app.py", line 703, in run 
    run_simple(host, port, self, **options) 
    File "/Library/Python/2.7/site-packages/Werkzeug-0.7.1-py2.7.egg/werkzeug/serving.py", line 612, in run_simple 
    test_socket.bind((hostname, port)) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
socket.error: [Errno 48] Address already in use 
+1

come stai "chiusura" del server? – Mark

risposta

80

Se si utilizza Linux È possibile usare lsof per scoprire quale processo sta utilizzando una data porta, potrebbe essere necessario installare prima, però, l'uso è piuttosto semplice:

lsof -i :5000 
+1

lsof -i: 5000 per la vittoria! Quindi uccidi solo il PID incriminato. Probabilmente c'è un modo più elegante, ma questo ci fa entrare. Grazie! – smitty1e

+0

che è stato di grande aiuto grazie mille –

+0

Ha funzionato anche per me! – nerdburn

8

Probabilmente stai chiudendo il server utilizzando Ctrl-Z. Se è così, usa invece Ctrl-C.

10

di uccidere il processo di pitone che è in ascolto sulla porta 5000:

sudo lsof -i :5000 | grep "python" | cut -d " " -f3 | xargs kill -9

+1

Non funziona più su Arch Linux. (usa '-f2' invece di' -f3') – z3ntu