40👍
You’re getting that message because the server is already running (possibly in the background). Make sure to kill the process (bring it to the foreground and press ctrl-c) to stop the process.
128👍
I found this information (originally from Kristinn Örn Sigurðsson) to solve my problem:
To kill it with -9 you will have to list all running manage.py processes, for instance:
ps aux | grep -i manage
You’ll get an output similar to this if you’ve started on many ports:
14770 8264 0.0 1.9 546948 40904 ? S Sep19 0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8006
14770 15215 0.0 2.7 536708 56420 ? S Sep13 0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8001
14770 30144 0.0 2.1 612488 44912 ? S Sep18 0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8000
14770 30282 0.0 1.9 678024 40104 ? S Sep18 0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8002
14770 30592 0.0 2.1 678024 45008 ? S Sep18 0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8003
14770 30743 0.0 2.1 678024 45044 ? S Sep18 0:00 /usr/local/bin/python manage.py runserver 0.0.0.0:8004
Then you’ll have to select the pid (which is the second number on the left) for the right manage.py process (python manage.py runserver… etc) and do:
kill -9 pid
For the above example, if you wanted to free up port 8000, you’d do:
kill -9 30144
- [Django]-DRF: custom ordering on related serializers
- [Django]-Difference between User.objects.create_user() vs User.objects.create() vs User().save() in django
- [Django]-Github issues api 401, why? (django)
30👍
If the ps aux
command (as per Meilo’s answer) doesn’t list the process that you wanted to kill but shows the port active in netstat -np | grep 8004
network activity, try this command (worked on Ubuntu).
sudo fuser -k 8004/tcp
where as, 8004 is the port number that you want to close.
This should kill all the processes associated with port 8004.
- [Django]-How to avoid AppConfig.ready() method running twice in Django
- [Django]-ModuleNotFoundError: No module named 'grp' on windows
- [Django]-Paginating the results of a Django forms POST request
14👍
No, he’s not an idiot guys. Same thing happens to me. Apparently it’s a bug with the python UUID process with continues running long after the django server is shutdown which ties the port up.
- [Django]-Django admin, hide a model
- [Django]-How to completely uninstall a Django app?
- [Django]-What is the easiest way to clear a database from the CLI with manage.py in Django?
- [Django]-Sending images using Http Post
- [Django]-Unable to find a locale path to store translations for file __init__.py
- [Django]-What's the purpose of Django setting ‘SECRET_KEY’?
9👍
This error is due to the server already running.
Background
I am answering on a more general level not specific to Django like the original question asks. So that those that land here from Google can easily fix the problem.
Solution
When you need to clear a port, all you need to do is these two steps
- In the terminal run
fg
- Press Control-C (if on a mac)
Explanation
fg brings the process to the foreground. Then Control-C stops the server.
Example
I was actually having this issue with my port 8000 when running an angular app. I was getting an error when I ran npm start
So I ran fg
, then I stopped the server with Control-C
Then I was able to successfully run the server
- [Django]-How to make an auto-filled and auto-incrementing field in django admin
- [Django]-How to set a Django model field's default value to a function call / callable (e.g., a date relative to the time of model object creation)
- [Django]-Group by Foreign Key and show related items – Django
7👍
Type fg
in the terminal to bring up the background task to the foreground.
Press Ctrl+C to close/stop the running server.
- [Django]-How do you limit list objects template side, rather than view side
- [Django]-Select distinct values from a table field
- [Django]-Django: Does prefetch_related() follow reverse relationship lookup?
6👍
I use pkill -If 'manage.py'
(-I
means interactive, -f
matches more than just the process name). See How to kill all processes with a given partial name? for more info on pkill.
- [Django]-Add a custom button to a Django application's admin page
- [Django]-Default filter in Django admin
- [Django]-How to run own daemon processes with Django?
5👍
sudo lsof -t -i tcp:8000 | xargs kill -9
If you want to free 8000 port than just copy command and paste in your cmd it will ask for sudo password. And then you are good to go.
- [Django]-Django's ModelForm unique_together validation
- [Django]-How can I get all the request headers in Django?
- [Django]-Django substr / substring in templates
3👍
If the port number that you are trying is 8001, then use this command
sudo fuser -k 8001/tcp
- [Django]-Get last record in a queryset
- [Django]-Pulling data to the template from an external database with django
- [Django]-How to use 'select_related' with get_object_or_404?
2👍
You do not want to simply increment the port number when restarting a Django server. This will result in having multiple instances of the Django server running simultaneously. A better solution is to kill the current instance and start a new instance.
To do this, you have multiple options. The easiest is
Python2: $ killall -9 python
Python3: $ killall -9 python3
If for some reason, this doesn’t work, you can do
$ kill <pid>
where <pid>
is the process id found from a simple $ ps aux | grep python
command.
- [Django]-What is "load url from future" in Django
- [Django]-How to use permission_required decorators on django class-based views
- [Django]-Django – what is the difference between render(), render_to_response() and direct_to_template()?
- [Django]-How do I use a dictionary to update fields in Django models?
- [Django]-Running Django with FastCGI or with mod_python
- [Django]-How to completely uninstall a Django app?
1👍
Repost from https://stackoverflow.com/a/27138521/1467342:
You can use this script in place of ./manage.py runserver
. I put it in scripts/runserver.sh
.
#!/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
- [Django]-How to disable Django's CSRF validation?
- [Django]-Error: "dictionary update sequence element #0 has length 1; 2 is required" on Django 1.4
- [Django]-Changing Django settings at runtime
0👍
Like mipadi said, you should be terminating the server (ctrl+c) and returning to the command prompt before calling manage.py runserver
again.
The only thing that could be disrupting this would be if you’ve somehow managed to make runserver act as a daemon. If this is the case, I’m guessing you’re using the Django test server as the actual web server, which you should NOT do. The Django test server is single threaded, slow and fragile, suitable only for local development.
- [Django]-How to display the current year in a Django template?
- [Django]-Django + Ajax
- [Django]-Find Monday's date with Python
- [Django]-Programmatically saving image to Django ImageField
- [Django]-Bypass confirmation prompt for pip uninstall
- [Django]-'EntryPoints' object has no attribute 'get' – Digital ocean
0👍
Happened so often that I wrote an alias to kill the process with python
in the name (careful if you have other such processes). Now I just run (no Ubuntu)
kill $(ps | grep "python" | awk "{print $1}")
You can even add python manage.py runserver ...
to the same alias so you can restart with two keystrokes.
- [Django]-What is the meaning of bind = True keyword in celery?
- [Django]-Django 1.7 – App 'your_app_name' does not have migrations
- [Django]-Write only, read only fields in django rest framework
0👍
You must have been doing control + z .. Instead do control + c that will kill the server session… Cheers!!!
- [Django]-Specifying limit and offset in Django QuerySet wont work
- [Django]-How to make an auto-filled and auto-incrementing field in django admin
- [Django]-How to completely dump the data for Django-CMS
0👍
Add the following library in manage.py
import os
import subprocess
import re
Now add the following python code after if __name__ == “__main__”:
ports = ['8000']
popen = subprocess.Popen(['netstat', '-lpn'],
shell=False,
stdout=subprocess.PIPE)
(data, err) = popen.communicate()
pattern = "^tcp.*((?:{0})).* (?P<pid>[0-9]*)/.*$"
pattern = pattern.format(')|(?:'.join(ports))
prog = re.compile(pattern)
for line in data.split('\n'):
match = re.match(prog, line)
if match:
pid = match.group('pid')
subprocess.Popen(['kill', '-9', pid])
This will first find the process id of port 8000 , will kill it and then restart your project. Now each time you don’t need to kill the pid manually.
- [Django]-How to store a dictionary on a Django Model?
- [Django]-Django + Ajax
- [Django]-ImproperlyConfigured: You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings
-1👍
netstat -ntlp
See my complete answer here. https://stackoverflow.com/a/34824239/5215825
- [Django]-How to do math in a Django template?
- [Django]-Annotating a Sum results in None rather than zero
- [Django]-How to resize an ImageField image before saving it in python Django model