python - uWSGI 和 Django - 运行 wsgi 时出错

标签 python django nginx uwsgi

什么是有效的

我正在关注wsgi documentation to run django 。在开始使用 nginx 之前,我正在测试一切是否正常。我成功运行了manage.py并在浏览器中加载了网页:

python manage.py runserver 0.0.0.0:8000

enter image description here

什么不起作用

当我尝试使用 uwsgi 运行它时出现问题:

uwsgi --http :8000 --module metrics.wsgi

我可以run it without errors ,但是当我尝试在浏览器中加载它时,我得到 AppRegistryNotReady error来自 uwsgi。知道可能是什么原因吗?这是我的 wsgi.py 文件:

import os, sys, site, django.core.handlers.wsgi

SITE_DIR = '/home/ubuntu/web/metrics.com/app/'
site.addsitedir(SITE_DIR)
sys.path.append(SITE_DIR)

os.environ['DJANGO_SETTINGS_MODULE'] = 'metrics.settings'
application = django.core.handlers.wsgi.WSGIHandler()

我的项目结构:

/ubuntu
    /www
        /metrics.com 
            /app         # here's my manage.py file
                metrics/ # here's my wsgi.py and settigs.py files

最佳答案

解决方案: wsgi.py 中的错误配置导致 uWSGI 无法调用该应用程序。我用这个 wsgi.py 解决了它:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "metrics.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

并像这样运行 uwsgi:

uwsgi --http :8000 --chdir /home/ubuntu/web/metrics.com/app --module gamemetrics.wsgi

编辑:使用 --chdir 我们设置用于 --module 的基目录。

编辑 2:在某些情况下,这可以修复 NGINX 错误:从上游读取响应 header 时上游过早关闭连接

关于python - uWSGI 和 Django - 运行 wsgi 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26327497/

相关文章:

python - add_form 和 form 的区别

python - 如何将 Django 2.2 与旧版 PostgreSQL 8.4 数据库一起使用?

http - nginx httpssubmodule 替换 html 内容

url - 使用相同的 URL 提供不同的页面

python - 无效的 block 标记。您是否忘记注册或加载此标签?

Python减少嵌套字典中的嵌套循环

python - Django:聚合在使用注释后返回错误结果

docker - nginx docker proxy_path到服务器中另一个docker的路径

python - 测试自定义 Django 模板过滤器

python - 如何在 Django 中计算和显示关系 ManyToMany 中的对象