首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:避免端口8000 (runserver)的冲突

Django:避免端口8000 (runserver)的冲突
EN

Stack Overflow用户
提问于 2021-09-10 10:49:12
回答 5查看 1.3K关注 0票数 0

我立刻开发了一些服务项目。

如果我运行了两次runserver,就会得到以下错误:

代码语言:javascript
复制
System check identified no issues (0 silenced).
September 10, 2021 - 10:44:26
Django version 3.1.4, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Error: That port is already in use.

我知道我可以手动提供不同的端口,但是更自动的方法会更好。

如果不手动为每个项目手工分配一个端口,我如何解决这个冲突?

我的笔记本电脑上有50多个系统,我不想用手给每个系统一个端口号。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2021-09-19 12:58:43

您可以实现如下内容。

settings.py中的

  1. 添加RUN_SERVER_PORT

代码语言:javascript
复制
RUN_SERVER_PORT = 8080

manage.py

  1. 实现了以下代码

代码语言:javascript
复制
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
from django.core.management.commands.runserver import Command as runserver
from django.conf import settings


def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'accountant.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    runserver.default_port = settings.RUN_SERVER_PORT
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

工作证明:

代码语言:javascript
复制
python manage.py runserver

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
September 19, 2021 - 12:47:59
Django version 3.2.6, using settings 'accountant.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CONTROL-C.

您可以使用RUN_SERVER_PORT中的任何可用端口

票数 2
EN

Stack Overflow用户

发布于 2021-09-14 11:08:46

您可以创建自己的管理命令runsever_foo

然后可以从settings.pyos.environ获取端口的默认值。

票数 3
EN

Stack Overflow用户

发布于 2021-09-17 16:55:04

参考这篇文章:https://stackoverflow.com/a/38319452/16936785

为了进行随机端口选择,我建议将manage.py下的服务器端口修改为如下:

代码语言:javascript
复制
import random
from django.core.management.commands.runserver import Command
port_number = random.randint(8000, 8888)
Command.default_port = str(port_number)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69131091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档