Answers:
参考: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
py-autoreload=N
在较新的版本中有一个选项。只需设置N
为检查的频率(以秒为单位)(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)
uwsgi还允许使用kill SIGNAL重新启动。我使用它如下:
# ps -efa | grep uwsgi | grep prod
app 13390 13383 0 07:40 ? 00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
app 13417 13390 0 07:40 ? 00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
app 13419 13390 0 07:40 ? 00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
# kill -HUP 13390
如果您运行相同的命令,您将看到child procs pid会随着master重新生成而改变。还要检查uwsgi配置中的主/工作过程计数。此方法易于与ansible或其他自动化工具集成,因此易于远程使用。
不需要使用--touch-reload启动原始程序。