Erreur du serveur Django: le port est déjà utilisé

204

Le redémarrage du serveur Django affiche l'erreur suivante:

this port is already running....

Ce problème se produit spécifiquement sur Ubuntu et non sur d'autres systèmes d'exploitation. Comment libérer le port pour redémarrer le serveur?

Ashish Kumar Saxena
la source

Réponses:

536

Une solution plus simple suffit de taper sudo fuser -k 8000/tcp. Cela devrait tuer tous les processus associés au port 8000.

ÉDITER:

Pour les utilisateurs osx, vous pouvez utiliser sudo lsof -t -i tcp:8000 | xargs kill -9

Mounir
la source
23
Sur mac, vous devez utiliser sudo lsof -i tcp:8000puis tuer les identifiants de processus qui s'affichent.
gordonc
Donc, quel que soit le port, remplacez simplement 8000 par le port où se produit le bloc.
Manish Shrivastava
Je reçois cette erreur, mais j'ai tout tué sur le port.
wanderer0810
57
netstat -ntlp

Cela montrera quelque chose comme ça.

   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     

Alors maintenant, fermez simplement le port dans lequel Django / python fonctionne déjà en tuant le processus qui lui est associé.

kill -9 PID

dans mon cas

kill -9 6599

Maintenant, lancez votre application Django.

Shekhar Singh Choudhary
la source
pour cela, nous devons installer net-tools.
Pooja Khatri
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
Ashish Kumar Saxena
la source
Vous essayez donc de redémarrer le serveur alors que l'un est déjà en cours d'exécution? Cela ne fonctionnera pas car le premier utilisera le port HTTP. Vous devez tuer ou terminer le premier avant d'essayer de relancer (au moins l'exécuter sur le même port).
Un programmeur du
Cela fonctionne parce que vous avez tué l'instance en cours d'exécution, c'est ce que j'ai dit que vous deviez faire. Vous ne pouvez pas avoir deux programmes écoutant sur le même port réseau, c'est aussi simple que cela. C'est donc une solution à quelque chose qui n'est pas vraiment un problème, juste un fait.
Un programmeur du
Je suis désolé si j'aurais pu devenir fort, je me sens juste un peu grincheux aujourd'hui. : /
Certains programmeur mec
5

Par défaut, la commande runserver démarre le serveur de développement sur l'IP interne au port 8000.

Si vous souhaitez modifier le port du serveur, passez-le comme argument de ligne de commande. Par exemple, cette commande démarre le serveur sur le port 8080:

python manage.py runserver 8080
Freddy
la source
1
@StephenRauch, la question ne se pose pas QUI utilise le port. La question indique une erreur lancée. Il s'agit d'une solution sur la façon de corriger cette erreur.
Freddy
L'OP demande comment redémarrer le serveur sur le port 8000, ne demande pas de l'exécuter sur un autre port
uclaastro
4

Nous n'utilisons pas cette commande {sudo lsof -t -i tcp: 8000 | xargs kill -9} Parce qu'il ferme tous les onglets ... Vous devez utiliser pour

ps -ef | grep python

kill -9 process_id

ps -ef | grep python (afficher tous les processus avec id)

kill -9 11633 (11633 est un identifiant de processus pour: - / bin / python manage.py runserver)

Mr Singh
la source
2

Ceci est une extension de la réponse de Mounir. J'ai ajouté un script bash qui couvre cela pour vous. Exécutez simplement ./scripts/runserver.shau lieu de ./manage.py runserveret cela fonctionnera exactement de la même manière.

#!/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
la source
2

Désolé pour un commentaire dans un ancien article, mais cela peut aider les gens

Tapez simplement ceci sur votre terminal

killall -9 python3

Il tuera tous les python3 fonctionnant sur votre machine et libérera tous vos ports. Aidez-moi beaucoup quand travailler dans le projet Django .

Antu
la source
1

Pour moi, cela se produit car ma demande d'API dans Postman est interceptée par un point d'arrêt du débogueur dans mon application ... laissant la demande suspendue. Si j'annule la demande dans Postman avant de tuer le serveur de mon application, l'erreur ne se produit pas en premier lieu.

-> Essayez donc d'annuler toutes les demandes ouvertes que vous faites dans d'autres programmes.

Sur macOS, j'utilise sudo lsof -t -i tcp:8000 | xargs kill -9lorsque j'oublie d'annuler la demande http ouverte afin de résoudre error = That port is already in use.Cela aussi, complet ferme mon application Postman, c'est pourquoi ma première solution est meilleure.

HashRocketSyntax
la source
1

Tapez 'fg' comme commande après ctl-c.
Commande:
Fg montrera qui fonctionne en arrière-plan. Après cela, ctl-c l'arrêtera.

fg
ctl-c

mahbubcseju
la source
0

ps aux | grep gérer

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

tuer -9 3438

Règles de base
la source
2
Bien que cet extrait de code puisse résoudre la question, y compris une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondrez à la question des lecteurs à l'avenir et que ces personnes ne connaissent peut-être pas les raisons de votre suggestion de code. Essayez également de ne pas surcharger votre code avec des commentaires explicatifs, cela réduit la lisibilité du code et des explications!
rene
0

Il semble que les IDE, VSCode, Puppeteer, nodemon, express, etc. provoquent ce problème, vous avez exécuté un processus en arrière-plan ou fermé la zone de débogage [navigateur, terminal, etc.] ou quoi que ce soit, de toute façon, j'ai répondu à la même question avant, vous voilà son lien

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

KhogaEslam
la source
0

si vous avez fait face à ce problème dans mac, il vous suffit d'ouvrir le moniteur d'activité et de forcer tout à fait python, puis réessayez

entrez la description de l'image ici

Ahmed Safadi
la source
0

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

Nandy
la source
0

Dans le cas où vous utilisez le terminal d'écran du VSC, l'erreur peut être due au fait que vous exécutez déjà le serveur dans un autre shell.

Cliquez simplement sur la liste déroulante à gauche du signe + dans l'en-tête du terminal de VSC et sélectionnez un autre shell et vérifiez si le serveur y fonctionne déjà. Quittez ce serveur et vous êtes prêt à lancer un autre serveur.

Yash Verma
la source