web-dev-qa-db-ja.com

pythonソケットを閉じる必要がある/開発環境で現在実行中のサーバーを見つける

python(Flaskマイクロフレームワークを使用)を学習しようとしていますが、コードのどこかでサーバーを開いたままにしているので混乱しています信じる。

私は 'python app.py'でサーバーを起動して閉じますが、それでもまだ生きています!

これがどのようにして可能かはわかりませんが、接続に問題があります。

ここには2つの質問があります。

最初:アクティブな接続/ソケットを見つけて閉じる方法

2番目:開いている接続を診断する方法はありますか?私の直感は、sqlLiteが最後に実装されているため、閉じていないことです

これは1つのファイルアプリケーション(構成ファイルと静的コンテンツを除く)なので、必要に応じてコードを投稿できます。

エラーが発生しました(フォルダーの場所が変更されました):

/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
23
Jay

Linuxを使用している場合、lsofを使用して、特定のポートを使用しているプロセスを見つけることができますが、最初にインストールする必要があるかもしれませんが、使用方法は非常に簡単です。

lsof -i :5000
83
Ole

ポート5000でリッスンしているpythonプロセスを強制終了するには:

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

10
Rahman

Ctrl-Zを使用してサーバーを閉じている可能性があります。その場合は、代わりにCtrl-Cを使用してください。

7
Assil Ksiksi