什么是有效的
我正在关注wsgi documentation to run django 。在开始使用 nginx 之前,我正在测试一切是否正常。我成功运行了manage.py并在浏览器中加载了网页:
python manage.py runserver 0.0.0.0:8000
什么不起作用
当我尝试使用 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/