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

2024-06-01 12:43:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经成立了uwsgi为nginx后面的django服务。然后我在django设置中更改数据库,但是uwsgi仍然显示带有旧数据库的站点。

我也试过this suggestion并添加了

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

到ini文件。但在重启uwsgi并触摸django.ini之后,它仍然服务于旧站点。我试着去激活virtualenv,也没有机会。所以我真的很困惑很感激你的暗示。


Tags: apps文件django数据库virtualenv站点etcnginx
3条回答

来自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

注意,这些选项不推荐用于生产。 祝你好运!

这是我的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工作正常。

贝尔特的答案解决了您的问题,原因是uWSGI只能在主进程模式下运行时优雅地重新启动。 http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server

我只需要将master=true添加到ini文件中,就可以使touch-reload参数工作。

相关问题 更多 >