我已经设置了uwsgi来为nginx提供django服务。然后我在django设置中更改数据库,但uwsgi仍显示具有旧数据库的站点。
我也尝试了this suggestion并添加了
touch-reload = /etc/uwsgi/apps-available/django.ini
到ini文件。但是在重新启动uwsgi并触摸django.ini
之后,它仍然可以用于旧网站。我试图停用并重新激活virtualenv,也没机会。所以真的很困惑,并欣赏你的提示。
答案 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
参数有效。