2011-10-09 30 views
22

我試圖學習python(使用Flask微框架),我很困惑,因爲我的代碼中的某處我保持服務器打開狀態相信。需要關閉python socket /在我的開發環境中查找當前正在運行的服務器

我用'python app.py'啓動我的服務器,然後關閉它......但它仍然活着!

我不知道這是如何可能的,但我必須做一些連接錯誤。

真的有兩個問題。

首先:我如何才能找到有效的連接/插座,關閉它

二:有沒有一種方法可以讓我診斷一下是有一個開放的連接,我的直覺是,sqlLite不打烊的這是我實施的最後一件事。

這是一個文件應用程序(減去一個配置文件和靜態內容),所以我可以發佈的代碼,如果需要的話。

產生錯誤(文件夾位置更改):

/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

你是如何「關閉」的服務器? – Mark

回答

80

如果你使用Linux,你可以使用lsof的找出哪些進程正在使用指定端口,您可能需要,雖然第一次安裝,使用很簡單:

lsof -i :5000 
+1

lsof -i:5000贏了!然後,殺死有問題的PID。可能有一種更優雅的方式,但這讓我們在門外。謝謝! – smitty1e

+0

這是很大的幫助,謝謝很多 –

+0

也爲我工作! – nerdburn

8

您可能正在使用Ctrl-Z關閉服務器。如果是這樣,請改用Ctrl-C。

10

殺死這是對5000端口監聽蟒蛇過程:

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

+1

在Arch Linux上不起作用。 (使用'-f2'而不是'-f3') – z3ntu

相關問題