Ошибка сервера Django: порт уже используется


204

Перезапуск сервера Django отображает следующую ошибку:

this port is already running....

Эта проблема возникает именно в Ubuntu, а не в других операционных системах. Как я могу освободить порт для перезагрузки сервера?

Ответы:


537

Более простое решение просто введите sudo fuser -k 8000/tcp. Это должно убить все процессы, связанные с портом 8000.

РЕДАКТИРОВАТЬ:

Для пользователей OSX вы можете использовать sudo lsof -t -i tcp:8000 | xargs kill -9


23
На Mac вам нужно использовать, а sudo lsof -i tcp:8000затем убить идентификаторы процесса, которые появляются.
Гордон

Таким образом, независимо от порта, просто замените 8000 на порт, возникает блок.
Маниш Шривастава

Я получаю эту ошибку, но я убил все на порту.
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.
Пуджа Хатри

12
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. Вы должны убить или прекратить первый, прежде чем пытаться запустить снова (по крайней мере, запустить его на том же порту).
Какой-то программист чувак

Это работает, потому что вы убили текущий запущенный экземпляр, что я и сказал. Вы не можете иметь две программы, прослушивающие один и тот же сетевой порт, это так просто. Так что это решение проблемы, которая на самом деле не является проблемой, просто факт.
Какой-то программист чувак

Извините, если бы я мог стать сильным, я просто чувствую себя немного сварливым сегодня. : /
Какой-то программист чувак

5

По умолчанию команда runserver запускает сервер разработки с внутреннего IP-адреса на порту 8000.

Если вы хотите изменить порт сервера, передайте его в качестве аргумента командной строки. Например, эта команда запускает сервер на порту 8080:

python manage.py runserver 8080

1
@ StephhenRauch, вопрос не задает, ВОЗ использует порт. Вопрос состоит в том, что выдается ошибка. Это решение о том, как исправить эту ошибку.
Фредди

Оператор спрашивает, как перезапустить сервер на порту 8000, а не запускать его на другом порту
uclaastro,

4

Мы не используем эту команду {sudo lsof -t -i tcp: 8000 | xargs kill -9} Потому что он закрывает все вкладки ... Вы должны использовать для

ps -ef | grep python

убить -9 process_id

ps -ef | grep python (показать весь процесс с идентификатором)

kill -9 11633 (11633 - это идентификатор процесса для: - / bin / python manage.py runserver)


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

Для меня это происходит потому, что мой запрос API в Postman перехватывается точкой останова отладчика в моем приложении ... оставляя запрос зависшим. Если я отменю запрос в Postman перед тем, как убить сервер моего приложения, ошибка не возникнет в первую очередь.

-> Так что попробуйте отменить любые открытые запросы, которые вы делаете в других программах.

В macOS я использую, sudo lsof -t -i tcp:8000 | xargs kill -9когда я забываю отменить запрос http, чтобы решить error = That port is already in use.эту проблему. Кроме того, complete закрывает мое приложение Postman, поэтому мое первое решение лучше.


1

Введите 'fg' как команду после этого ctl-c.
Команда:
Fg покажет, что работает на фоне. После этого ctl-c остановит его.

фг
ctl-c


0

PS Aux | Греп управлять

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

убить -9 3438


2
Хотя этот фрагмент кода может решить вопрос, в том числе объяснение действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин, по которым вы предлагаете код. Также постарайтесь не переполнять ваш код пояснительными комментариями, это снижает удобочитаемость кода и пояснений!
Rene

0

Кажется, что IDE, VSCode, Puppeteer, nodemon, express и т. Д. Вызывают эту проблему, вы запустили процесс в фоновом режиме или просто закрыли область отладки [браузер, терминал и т. Д.] Или что-то еще, во всяком случае, я ответил на тот же вопрос до, вот вам это ссылка

https://stackoverflow.com/a/49797588/2918720


0

Если вы столкнулись с этой проблемой в Mac, вам просто нужно открыть монитор активности и запустить Python, а затем попробуйте снова

введите описание изображения здесь



0

Если вы используете экранный терминал VSC, ошибка может быть связана с тем, что вы уже запускаете сервер в какой-либо другой оболочке.

Просто нажмите на выпадающее меню слева от знака + в заголовке терминала VSC, выберите другую оболочку и проверьте, работает ли сервер там. Закройте этот сервер, и вы готовы запустить другой сервер.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.