在多个端口上运行Django

8
有人能告诉我如何同时在两个端口上运行Django吗?默认的Django配置仅侦听8000端口。我想同时在xxxx端口上运行另一个实例。我希望将所有请求重定向到我的Django应用程序中特定的应用程序的第二个端口。

我需要使用默认的Django安装来完成这个操作,而不是使用像nginx、Apache等Web服务器。

谢谢


假设我的Django应用程序中有两个应用程序。现在我的意思不是两个单独的Django应用程序,而是'应用'目录中的两个单独的文件夹。让我们称之为app1app2

我希望所有8000端口上的请求都转到app1,并且所有XXXX端口上的请求都转到app2

希望对你有所帮助。

4个回答

17

只需运行两个./manage.py runserver实例即可。您可以通过直接指定端口来设置端口:./manage.py runserver 8002以便在8002端口上进行监听。

编辑 我不太明白您为什么要这样做。如果您想让两个服务器提供您网站的不同部分,则实际上有两个站点,需要两个独立的settings.pyurls.py文件。然后,您将使用每个实例运行一个runserver,并适当地传递设置标志:./manage.py runserver 8002 --settings=app1.settings


好主意,但那并不能完全解决我的问题。我应该更明确地表达。我会进行编辑。 - Mridang Agarwalla

7
考虑另一件事情 - Django 的会话功能将为每个站点使用相同的会话 cookie,而且由于cookie 不是端口特定的,因此在切换窗口时,除非您在开发过程中使用多个浏览器会话/私人浏览,否则每次都会注销。尽管这是在同一站点上以2个不同用户身份登录时需要做的事情,但在同时运行 Django 的 2个不同本地主机端口上登录到 2个不同站点时,不必像这样工作。一个简单的解决方案是编写一个简单的中间件来通过将端口号附加到用于存储会话 ID 的变量名来修复此问题。 这是我使用的中间件

我想知道这是否可以解决我的问题。我在一个实例上运行多个 Docker 容器,因此 Django 在多个主机端口上运行。当我登录时,如果响应来自另一个容器,它将再次响应登录,因为它不知道我刚刚与另一个服务器进行了身份验证,所以无法检索会话。 - radtek
谢谢!我遇到了这个问题,我以为是新版Firefox的问题! - Genarito

2
内置的 Web 服务器仅用于开发,因此在需要在多个端口上运行时,您应该使用 Apache 或类似的服务器。

另一方面,只需启动多个 runserver 实例即可启动多个服务器。只要您使用单独的数据库服务器,我认为不会有任何额外的问题。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接