当 Python 脚本被修改时,如何让 uWSGI 重新启动?

当 Python 脚本被修改时,如何让 uWSGI 重新启动?

记不清在哪里,但我读到过当项目脚本被修改时,uWSGI 可以像 Django 开发服务器一样重新加载自身。我在文档,也不在互联网上。我该怎么做?

我在工作机器上使用 Ubuntu 12.04,在舞台和生产服务器上使用 Debian Squeeze,Django 1.4 和 uWSGI 1.2。

答案1

参考:http://projects.unbit.it/uwsgi/wiki/Management

如果你已经用该--touch-reload=/path/to/special/file/usually/the.ini选项启动了 uwsgi,那么重新加载你的 uWSGI 就是一个简单的事情,只需使用

touch /path/to/special/file/usually/the.ini

如果您想要“自动重新加载”功能,可以使用以下技巧: http://projects.unbit.it/uwsgi/wiki/TipsAndTricks#uWSGIdjangoautoreloadmode

答案2

py-autoreload=N新版本中有一个选项。只需设置N为检查频率(以秒为单位)(3 是一个不错的值)。

答案3

如果你不想丢失 django 自动重新加载,请注册此重新加载方法(即在 settings.py 中):

import uwsgi
from uwsgidecorators import timer
from django.utils import autoreload

@timer(3)
def change_code_gracefull_reload(sig):
    if autoreload.code_changed():
        uwsgi.reload()

现在,如果您更改代码,它将被重新加载。

作者:Simone Federici

答案4

正如所述文档让 uWSGI 正常重启。

# using kill to send the signal
kill -HUP `cat /tmp/project-master.pid`
# or the convenience option --reload
uwsgi --reload /tmp/project-master.pid
# or if uwsgi was started with touch-reload=/tmp/somefile
touch /tmp/somefile

相关内容