记不清在哪里,但我读到过当项目脚本被修改时,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