Помилка сервера 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.