Djangoサーバーエラー:ポートは既に使用されています


204

Djangoサーバーを再起動すると、次のエラーが表示されます。

this port is already running....

この問題はUbuntuでのみ発生し、他のオペレーティングシステムでは発生しません。ポートを解放してサーバーを再起動するにはどうすればよいですか?

回答:


536

タイプするだけの、よりシンプルなソリューションsudo fuser -k 8000/tcpです。これにより、ポート8000​​に関連付けられているすべてのプロセスが強制終了されます。

編集:

使用できるosxユーザーの場合 sudo lsof -t -i tcp:8000 | xargs kill -9


23
Macではsudo lsof -i tcp:8000、表示されるプロセスID を使用して強制終了する必要があります。
gordonc

したがって、ポートが何であれ、8000がブロックが発生するポートに置き換えるだけです。
Manish Shrivastava 2016

このエラーが発生しましたが、ポート上のすべてを強制終了しました。
wanderer0810

57
netstat -ntlp

こんな感じになります。

   Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State           PID/Program name    
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      6599/python         
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      -                   
tcp        0      0 192.168.124.1:53        0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::3306                 :::*                    LISTEN     

そのため、Django / pythonが実行されているポートを、それに関連付けられているプロセスを強制終了することで閉じます。

kill -9 PID

私の場合

kill -9 6599

Djangoアプリを実行します。


このため、net-toolsをインストールする必要があります。
Pooja Khatri

11
ps aux | grep -i manage

after that you will see all process 


ubuntu@ip-10-154-22-113:~/django-apps/projectname$ ps aux | grep -i manage
ubuntu    3439  0.0  2.3  40228 14064 pts/0    T    06:47   0:00 python manage.py runserver project name
ubuntu    3440  1.4  9.7 200996 59324 pts/0    Tl   06:47   2:52 /usr/bin/python manage.py runserver project name
ubuntu    4581  0.0  0.1   7988   892 pts/0    S+   10:02   0:00 grep --color=auto -i manage


kill -9 process id


e.d kill -9 3440


`enter code here`after that :

python manage.py runserver project name

サーバーがすでに実行されているときに、サーバーを再起動しようとしていますか?最初のものはHTTPポートを使用するため、これは機能しません。最初のものを強制終了するか終了してから、再度実行する必要があります(少なくとも同じポートで実行してください)。
一部のプログラマー、

現在実行中のインスタンスを強制終了したので機能しています。同じネットワークポートで2つのプログラムをリッスンすることはできません。それはそれと同じくらい簡単です。したがって、これは実際には問題ではない事実の解決策です。
一部のプログラマー、

強くなってきたとしたらすみません、今日はちょっと不機嫌です。:/
一部のプログラマー、

5

デフォルトでは、runserverコマンドは、ポート8000​​の内部IPで開発サーバーを起動します。

サーバーのポートを変更する場合は、コマンドライン引数として渡します。たとえば、次のコマンドはポート8080でサーバーを起動します。

python manage.py runserver 8080

1
@StephenRauch、質問はWHOがポートを使用していることを尋ねるものではありません。質問は、エラーがスローされることを示しています。これは、そのエラーを修正する方法のソリューションです。
フレディ

OPは、サーバーをポート8000​​で再起動する方法を尋ねていますが、別のポートでサーバーを実行することは求めていません
uclaastro

4

このコマンドは使用しません{sudo lsof -t -i tcp:8000 | xargs kill -9}すべてのタブが閉じているため...

ps -ef | grep python

kill -9 process_id

ps -ef | grep python(IDを持つすべてのプロセスを表示)

kill -9 11633(11633は:-/ bin / python manage.py runserverへのプロセスID)


2

これはムーニアの答えの拡張です。これをカバーするbashスクリプトを追加しました。./scripts/runserver.sh代わりに実行するだけで./manage.py runserver、まったく同じように動作します。

#!/bin/bash

pid=$(ps aux | grep "./manage.py runserver" | grep -v grep | head -1 | xargs | cut -f2 -d" ")

if [[ -n "$pid" ]]; then
    kill $pid
fi

fuser -k 8000/tcp
./manage.py runserver

2

古い投稿でコメントして申し訳ありませんが、それは人々を助けるかもしれません

これを端末に入力するだけです

killall -9 python3

マシンで実行中のすべてのpython3を強制終了し、すべてのポートを解放します。Djangoプロジェクトでいつ作業するかを非常に助けてくれます。


1

私にとって、これはPostmanのAPIリクエストがアプリのデバッガーブレークポイントによってインターセプトされているために発生します...リクエストがハングしたままになります。アプリのサーバーを強制終了する前にPostmanでリクエストをキャンセルした場合、そもそもエラーは発生しません。

->したがって、他のプログラムで行っている開いている要求をキャンセルしてみてください。

macOSでは、sudo lsof -t -i tcp:8000 | xargs kill -9解決するためにオープンHTTPリクエストをキャンセルするのを忘れたときに使用してきerror = That port is already in use.ました。


1

ctl-cの後にコマンドとして「fg」を入力します。
コマンド:
Fgはバックグラウンドで実行されているものを表示します。その後、ctl-cはそれを停止します。

fg
ctl-c


0

ps aux | grep管理

ubuntu 3438 127.0.0 2.3 40256 14064 pts / 0 T 06:47 0:00 python manage.py runserver

キル-9 3438


2
このコードスニペットは問題を解決する可能性がありますが、説明を含めると、投稿の品質を向上させるのに役立ちます。あなたは将来の読者のための質問に答えていることを覚えておいてください、そしてそれらの人々はあなたのコード提案の理由を知らないかもしれません。また、コードを説明コメントで混雑させないようにしてください。これにより、コードと説明の両方が読みにくくなります。
ルネ


0

Macでこの問題に直面している場合は、アクティビティモニターを開いてかなりのPythonを強制するだけで、もう一度試してください

ここに画像の説明を入力してください



0

VSCの画面ターミナルを使用している場合、エラーは他のシェルですでにサーバーを実行していることが原因である可能性があります。

VSCのターミナルのヘッダーにある+記号の左側にあるドロップボックスをクリックし、他のシェルを選択して、サーバーがすでにそこで実行されているかどうかを確認します。そのサーバーを終了すると、別のサーバーを起動する準備が整います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.