在我的开发机上,我已将 uWSGI 配置为每次文件被触碰时重新加载(使用 --touch-reload 命令行参数)。当我指定一个不存在的文件时,我会在 uWSGI 日志中收到警告。如果我指定一个现有文件(例如/data/reload.uwsgi
),则日志中不会显示任何内容,这意味着设置可能没事的。
问题在于:无论何时touch /data/reload.uwsgi
,uWSGI 都不会重新加载。日志没有显示任何特殊内容(浏览源代码显示我应该得到某种确认,表明受监控的文件已被触及)。
但有一件事:所有 uwsgi 进程都开始占用所有可用的 CPU 能力,直到我停止该服务。
uWSGI 仍然有效,但是使用的是“旧”的 Python 代码,而不是重新加载的代码。
我遗漏了什么?这是错误还是其他什么?
提前致谢,
罗曼
顺便说一下,我正在使用uWSGI 0.9.7.2
。uWSGI和 Python 在FreeBSD 8.2 AMD64
Python 2.7.1
监狱。
我尝试过像/data/reload.uwsgi
或 这样的文件/tmp/reload.uwsgi
,但都不起作用。我甚至尝试将这些文件的所有权转交给用户www
(运行 uwsgi 进程的用户),但没有成功。为了记录,下面是/etc/rc.conf
运行 uWSGI 服务的命令行:
uwsgi_flags="-p 2 -M -t 30 -C --pythonpath /data/app -w <APPNAME> --uid www --gid www -L -d /var/log/uwsgi.log --post-buffering 8192 --touch-reload /data/reload.uwsgi"
答案1
这是FreeBSD的一个bug,查看最新提示,已经修复