【问题标题】:uwsgi does not reload after changing django settings更改 django 设置后 uwsgi 不会重新加载
【发布时间】:2015-03-04 23:25:54
【问题描述】:

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

我也试过this suggestion并添加了

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

到ini文件。但是在重新启动 uwsgi 并触摸 django.ini 后,它仍然为旧站点提供服务。我试图停用并重新激活 virtualenv,也没有机会。所以真的很困惑,很感激你的提示。

【问题讨论】:

    标签: python django uwsgi


    【解决方案1】:

    来自关于 touch-reload 的 uWSGI 文档: 如果指定的文件被修改/触摸,则重新加载 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
    

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

    【讨论】:

      【解决方案2】:

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

      我只需将master=true 添加到我的ini 文件中即可使touch-reload 参数起作用。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 你这个摇滚老兄!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-29
        • 2012-10-13
        • 1970-01-01
        • 1970-01-01
        • 2021-07-11
        • 1970-01-01
        相关资源
        最近更新 更多