【问题标题】:Gunicorn will not bind to my applicationGunicorn 不会绑定到我的应用程序
【发布时间】:2015-01-10 19:28:12
【问题描述】:

我已经使用默认的 localhost 创建了一个 django Web 应用程序,但是我正在尝试在服务器上进行设置,以便我可以配置 postgre 数据库并继续操作,而无需稍后重做数据库。

我通过数字海洋 ubuntu 14 droplet 托管该网站。当我创建 droplet 时,我选择它已经为 django 预配置。它使用 nginx 和 gunicorn 来托管站点。

当我第一次创建服务器实例时,一个基本的 django 应用程序被配置为在给定的 IP 上工作。它确实做到了。

我尝试将我的项目克隆到与该项目相同的目录中,假设它位于 python 路径 ('/home/project') 上,并将 nginx 配置为根据我找到的一些文档提供 127.0.0.1:8000 .

我相信问题出在我尝试绑定 gunicorn 时。我收到此输入的以下错误。

gunicorn -b 127.0.0.1:8000 GenericRestaurantSystem/wsgi.py:application

ImportError: Failed to find application, did you mean 'program/wsgi:application'?

我不是 100% 确定,但似乎 gunicorn 在这一点上没有提供任何东西(甚至没有提供)。

对成功绑定此应用有什么建议吗?

【问题讨论】:

标签: python django nginx gunicorn


【解决方案1】:

这不是您使用 gunicorn 引用 WSGI 文件的方式。见the docs

模块名称可以是完整的虚线路径。变量名是指应在指定模块中找到的 WSGI 可调用对象。

所以如果你的 wsgi.py 文件在 GenericRestaurantSystem/wsgi.py 中,你的命令应该是

gunicorn -b 127.0.0.1:8000 GenericRestaurantSystem.wsgi:application

【讨论】:

  • 我不明白该命令是如何工作的。 gunicorn遇到GenericRestaurantSystem.wsgi:application在做什么?
  • 换句话说:使用 project.wsgi(python 导入样式)而不是 project/wsgi(路径样式)。我写这篇文章是针对像我这样的穷人,他们可能认为“GenericRestaurantSystem”这个名字意味着里面的某个阶级。
【解决方案2】:

我想应该是

gunicorn GenericRestaurantSystem.wsgi:application

【讨论】:

    【解决方案3】:

    对我来说,这项工作就像魅力:)

    cd ~/myproject
    gunicorn —bind 0.0.0.0:8000 myproject.wsgi:application
    

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,并解决了这个问题:

      gunicorn -b 127.0.0.1:8000 wsgi:application
      

      我将wsgi.py 文件放在与manage.py 相同的级别。

      【讨论】:

        【解决方案5】:

        在根目录下创建文件 you_django_name_project "main.py":

        from you_django_name_project.wsgi import application
        app = application
        

        然后运行:

        gunicorn -b 127.0.0.1:8000 main:app
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-05
          • 2019-09-27
          • 1970-01-01
          • 2013-11-15
          • 1970-01-01
          • 2016-01-27
          • 1970-01-01
          相关资源
          最近更新 更多