Помилка сервера Django: порт уже використовується


204

Перезапуск сервера Django відображає таку помилку:

this port is already running....

Ця проблема виникає спеціально для Ubuntu, а не інших операційних систем. Як я можу звільнити порт, щоб перезапустити сервер?

Відповіді:


536

Більш просте рішення просто введіть sudo fuser -k 8000/tcp. Це повинно знищити всі процеси, пов'язані з портом 8000.

Редагувати:

Для користувачів ОСХ ви можете використовувати sudo lsof -t -i tcp:8000 | xargs kill -9


23
На mac вам потрібно використовувати, sudo lsof -i tcp:8000а потім знищити ідентифікатори процесу, які з'являються.
gordonc

Отже, який би порт не був замінений на 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.


для цього нам потрібно встановити чисті інструменти.
Pooja

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-порт. Перш ніж спробувати запустити (принаймні, запустити його на тому ж порту), потрібно вбити або припинити його.
Якийсь програміст чувак

Це працює, тому що ти вбив екземпляр, який зараз працює, і це те, що я сказав, що ти повинен зробити. Ви не можете прослуховувати дві програми в одному мережевому порту, це так просто. Тож це рішення чогось, що насправді не є проблемою, а лише фактом.
Якийсь програміст чувак

Вибачте, якщо я, можливо, став сильним, я просто відчуваю себе трохи бурхливим сьогодні. : /
Деякий програміст чувак

5

За замовчуванням команда runserver запускає сервер розробки на внутрішньому IP-адресі на порту 8000.

Якщо ви хочете змінити порт сервера, передайте його як аргумент командного рядка. Наприклад, ця команда запускає сервер на порт 8080:

python manage.py runserver 8080

1
@StephenRauch, питання не задає, хто використовує порт. Питання вказує на помилку, яку викидали. Це рішення про те, як виправити цю помилку.
Фредді

ОП запитує, як перезапустити сервер на порт 8000, не вимагаючи запустити його на іншому порту
uclaastro

4

Ми не використовуємо цю команду {sudo lsof -t -i tcp: 8000 | xargs kill -9} Оскільки це закриває всі вкладки ... Ви повинні використовувати

пс -еф | греп пітон

вбити -9 process_id

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

kill -9 11633 (11633 - це ідентифікатор процесу для: - / bin / python Manag.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.це. Також, повністю закриває мій додаток Postman, тому моє перше рішення краще.


1

Введіть 'fg' як команду після цього ctl-c.
Команда:
Fg покаже, що працює на тлі. Після цього ctl-c зупинить його.

fg
ctl-c


0

ps aux | греп керувати

ubuntu 3438 127.0.0 2.3 40256 14064 балів / 0 T 06:47 0:00 python management.py runserver

вбити -9 3438


2
Хоча цей фрагмент коду може вирішити питання, у тому числі пояснення дійсно допомагає покращити якість вашої публікації. Пам'ятайте, що ви відповідаєте на запитання читачів у майбутньому, і ці люди можуть не знати причини вашої пропозиції щодо коду. Будь ласка, намагайтеся не переповнювати свій код пояснювальними коментарями, це зменшує читабельність і коду, і пояснень!
оновлення

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.