【问题标题】:django wsgi app settingsdjango wsgi 应用程序设置
【发布时间】:2017-03-16 10:53:49
【问题描述】:

我正在尝试使用内置的wsgi 运行我的 django 应用程序。我的目录结构如下:

/project/
    -/project/
        - settings.py
        - wsgi.py
        - urls.py
    -/app/

这是提供的wsgi.py 文件,我稍作修改。

import os
from django.core.wsgi import get_wsgi_application

# used to be crowdlabel.settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")

application = get_wsgi_application()

if __name__ == "__main__":
    application.run()

运行 python project/wsgi.py 时,我收到一个错误,即找不到模块 project。为了解决这个问题,我更改了os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")。这样做会在get_wsgi_application() 函数ModuleNotFoundError: No module named 'app' 中给我一个新错误。

我非常困惑,所以如果有经验的人可以提出我做错了什么,将不胜感激。请注意,该应用在测试服务器上运行良好。

【问题讨论】:

  • 需要将外部project目录添加到python路径中。例如,请参阅 deploying with Apache and modwsgi 的 Django 文档,其中设置了 WSGIPythonPath
  • 内置wsgi是什么意思?你为什么不直接运行python manage.py runserver?据我所知,application 上也没有 run() 方法。不知道您从哪里得到该行,因为不在生成的 wsgi.py 文件中。
  • 我需要投入生产,显然最好使用像 nginx 这样的东西而不是测试服务器。 application.run() 也是在黑暗中刺伤,并没有改变任何事情 afaik
  • 你看过 gunicorn、uWSGI 或 mod_wsgi 吗?有关部署的 Django 文档可以在 docs.djangoproject.com/en/1.10/howto/deployment 找到
  • 我正在尝试遵循uwsgi-docs.readthedocs.io/en/latest/tutorials/… 教程,但 nginx->wsgi 服务似乎不起作用。我认为这是一个单独的小问题

标签: django python-3.x wsgi


【解决方案1】:

wsgi.py 不应从命令行运行,而应从 WSGI 容器运行。最受欢迎的是gunicorn。试试:

pip install gunicorn
gunicorn project.wsgi

更多信息here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 2012-06-20
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    相关资源
    最近更新 更多