更改django设置后uwsgi不会重新加载

时间:2015-01-07 05:48:39

标签: python django uwsgi

我已经设置了uwsgi来为nginx提供django服务。然后我在django设置中更改数据库,但uwsgi仍显示具有旧数据库的站点。

我也尝试了this suggestion并添加了

touch-reload = /etc/uwsgi/apps-available/django.ini

到ini文件。但是在重新启动uwsgi并触摸django.ini之后,它仍然可以用于旧网站。我试图停用并重新激活virtualenv,也没机会。所以真的很困惑,并欣赏你的提示。

3 个答案:

答案 0 :(得分:8)

来自uWSGI的关于touch-reload的文档: 如果修改/触摸指定的文件,则重新加载uWSGI 因此,如果您想重新加载settings.py中的更改,您应该执行以下操作:

touch-reload = /path/to/your/django-project/settings.py

在uWSGI ini文件中的任何更改重新加载uWSGI之前使用的指令。

仅供参考,您还需要在代码库中更改uWSGI,您可以使用py-autoreload指令: http://uwsgi-docs.readthedocs.org/en/latest/Options.html#py-autoreload 所以你应该在你的uwsgi.ini

中有这样的东西
py-autoreload = 1

请注意,建议不要将此选项用于生产。 祝你好运!

答案 1 :(得分:4)

这是我的uWSGI的配置文件

wsgi-file = /home/www-data/djcode/metCCS/metCCS/nginx/wsgi.py
processer = 4
threads = 2
stats = 127.0.0.1:6000
enable-threads = true
master = true
harakiri = 30
socket = /usr/share/nginx/html/ng-sock/metCCS.sock
chmod-socket = 775
uid = www-data
gid = www-data
touch-reload = /home/www-data/djcode/metCCS/metCCS/settings.py

然后,touch /home/www-data/djcode/metCCS/metCCS/settings.py工作正常。

答案 2 :(得分:1)

Belter的答案解决了您的问题的原因是uWSGI只能在使用主进程模式运行时正常重启。 Core Animation Programming Guide

我只需将master=true添加到我的ini文件中,以使touch-reload参数有效。