Erro no servidor Django: a porta já está em uso

204

Reiniciar o servidor Django exibe o seguinte erro:

this port is already running....

Esse problema ocorre especificamente no Ubuntu e não em outros sistemas operacionais. Como posso liberar a porta para reiniciar o servidor?

Ashish Kumar Saxena
fonte

Respostas:

536

Uma solução mais simples basta digitar sudo fuser -k 8000/tcp. Isso deve matar todos os processos associados à porta 8000.

EDITAR:

Para usuários osx, você pode usar sudo lsof -t -i tcp:8000 | xargs kill -9

Mounir
fonte
23
No mac, você precisa usar sudo lsof -i tcp:8000e matar os IDs do processo que aparecem.
gordonc
Portanto, qualquer que seja a porta, substitua 8000 pela porta em que o bloco ocorre.
Manish Shrivastava
Estou recebendo esse erro, mas matei tudo na porta.
wanderer0810
57
netstat -ntlp

Isso mostrará algo assim.

   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     

Então agora feche a porta na qual o Django / python já está sendo executado, matando o processo associado a ele.

kill -9 PID

No meu caso

kill -9 6599

Agora execute seu aplicativo Django.

Shekhar Singh Choudhary
fonte
para isso, precisamos instalar o 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
Ashish Kumar Saxena
fonte
Então você tenta iniciar o servidor novamente, enquanto um já está sendo executado? Isso não funcionará, pois o primeiro usará a porta HTTP. Você deve matar ou encerrar o primeiro, antes de tentar executar novamente (pelo menos execute-o na mesma porta).
Algum cara programador
Está funcionando porque você matou a instância em execução no momento, e foi o que eu disse que tinha que fazer. Você não pode ter dois programas ouvindo na mesma porta de rede, é tão fácil quanto isso. Portanto, esta é uma solução para algo que não é realmente um problema, apenas um fato.
Algum programador
Me desculpe se eu estivesse ficando forte, estou me sentindo um pouco irritada hoje. : /
Algum programador cara
5

Por padrão, o comando runserver inicia o servidor de desenvolvimento no IP interno na porta 8000.

Se você deseja alterar a porta do servidor, passe-a como um argumento de linha de comando. Por exemplo, este comando inicia o servidor na porta 8080:

python manage.py runserver 8080
Freddy
fonte
1
@StephenRauch, a pergunta não pergunta à OMS que está usando a porta. A pergunta está indicando um erro sendo lançado. Esta é uma solução sobre como corrigir esse erro.
Freddy
O OP está perguntando como reiniciar o servidor na porta 8000, não pedindo para executá-lo em outra porta
uclaastro
4

Não usamos este comando {sudo lsof -t -i tcp: 8000 | xargs kill -9} Porque fecha todas as guias ... Você deve usar para

ps -ef | grep python

kill -9 process_id

ps -ef | grep python (mostra todo o processo com id)

kill -9 11633 (11633 é um ID de processo para: - / bin / python manage.py runserver)

Mr Singh
fonte
2

Esta é uma expansão da resposta de Mounir. Eu adicionei um script bash que cobre isso para você. Basta executar em ./scripts/runserver.shvez de ./manage.py runservere funcionará exatamente da mesma maneira.

#!/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
jstaab
fonte
2

Desculpe pelo comentário em um post antigo, mas pode ajudar as pessoas

Basta digitar isso no seu terminal

killall -9 python3

Ele matará todos os python3 em execução na sua máquina e liberará todas as suas portas. Ajude-me muito quando trabalhar no projeto Django .

Antu
fonte
1

Para mim, isso acontece porque minha solicitação de API no Postman está sendo interceptada por um ponto de interrupção do depurador no meu aplicativo ... deixando a solicitação suspensa. Se eu cancelar a solicitação no Postman antes de matar o servidor do meu aplicativo, o erro não ocorre em primeiro lugar.

-> Portanto, tente cancelar as solicitações abertas que você está fazendo em outros programas.

No macOS, uso sudo lsof -t -i tcp:8000 | xargs kill -9quando esqueço de cancelar a solicitação de http aberto para resolver. error = That port is already in use.Isso também fecha o meu aplicativo Postman, e é por isso que minha primeira solução é melhor.

HashRocketSyntax
fonte
1

Digite 'fg' como comando depois desse ctl-c.
Comando:
Fg mostrará qual está sendo executado em segundo plano. Depois disso, o ctl-c o interromperá.

fg
ctl-c

mahbubcseju
fonte
0

ps aux | grep gerenciar

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

kill -9 3438

Regras Basantes
fonte
2
Embora esse trecho de código possa resolver a questão, incluir uma explicação realmente ajuda a melhorar a qualidade da sua postagem. Lembre-se de que você está respondendo à pergunta dos leitores no futuro e essas pessoas podem não saber os motivos da sua sugestão de código. Tente também não sobrecarregar seu código com comentários explicativos, isso reduz a legibilidade do código e das explicações!
Rene4 de
0

Parece que IDEs, VSCode, Puppeteer, nodemon, express, etc. causam esse problema, você executou um processo em segundo plano ou apenas fechou a área de depuração [navegador, terminal etc.] ou qualquer outra coisa, de qualquer forma, respondi à mesma pergunta antes, aqui está o link

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

KhogaEslam
fonte
0

se você enfrentar esse problema no mac, basta abrir o monitor de atividades e forçar bastante o python e tente novamente

insira a descrição da imagem aqui

Ahmed Safadi
fonte
0

lsof -t -i tcp: 8000 | xargs kill -9

Nandy
fonte
0

Caso você esteja usando o terminal de tela do VSC, o erro pode ser devido ao fato de você já executar o servidor em algum outro shell.

Basta clicar na caixa de seleção à esquerda do sinal + no cabeçalho do terminal do VSC e selecionar outro shell e verificar se o servidor já está em execução no local. Saia desse servidor e você estará pronto para iniciar outro servidor.

Yash Verma
fonte