【问题标题】:Run Django on multiple ports在多个端口上运行 Django
【发布时间】:2011-04-22 11:04:03
【问题描述】:

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

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

谢谢


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

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

HTH。

【问题讨论】:

    标签: python django


    【解决方案1】:

    只需运行./manage.py runserver 的两个实例。直接指定端口即可:./manage.py runserver 8002 监听 8002 端口。

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

    【讨论】:

    • 好主意。但这并不能完全解决我的问题。我应该更明确一点。我会进行编辑。
    【解决方案2】:

    内置的网络服务器仅用于开发,因此在需要在多个端口上运行的情况下,您应该真正使用 apache 或类似服务器。

    另一方面,您应该能够通过启动多个runserver 实例来启动多个服务器。只要您使用单独的数据库服务器,我认为这不会有任何额外的问题。

    【讨论】:

      【解决方案3】:

      要考虑的另一件事 - django 的会话内容将为每个站点使用相同的会话 cookie,并且由于 cookies are not port specific,除非您使用多个浏览器会话/开发期间的私密浏览。

      虽然这是您在同一站点上以 2 个不同用户身份登录时需要执行的操作,但登录到两个在不同 localhost 端口上运行 django 的不同站点不必像这样工作。

      一个简单的解决方案是编写一个简单的中间件来解决此问题,方法是将端口号附加到用于存储会话 ID 的变量名称中。 Here's the one I use.

      【讨论】:

      • 我想知道这是否能解决我的问题。我在一个实例上运行多个 docker 容器,因此 django 在多个主机端口上运行。当我登录时,如果响应是从另一个容器提供的,它会再次登录响应,因为它不知道我刚刚通过另一台服务器进行了身份验证,因此它无法检索会话。
      • 谢谢!我遇到了这个问题,我还以为是新的 Firefox 版本!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2021-09-12
      • 2014-11-23
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多