django 保留缓存中的文件,删除 view.py 和 view.pyc 文件,仍然运行
django holding onto files in cache, delete view.py and view.pyc file, still runs
我继承了一个项目,该项目是一个运行 python/django 的网站。有一个问题,我认为 Django 正在保存内存缓存中的文件(可能)。
这是一个生产服务器。目前没有DEV环境(这是另外一回事)。
我被迫对实时网站进行请求的紧急错误修复。但是对 .py 文件的任何修改都不会反映在网站上。我什至可以完全删除 view.py(和 view.pyc)并且页面继续愉快地加载。我研究了缓存 (https://docs.djangoproject.com/en/1.3/topics/cache/),并添加了适当的虚拟缓存行:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}
我试过将缓存强制设置为 1 秒:
CACHE_MIDDLEWARE_KEY_PREFIX = ''
CACHE_MIDDLEWARE_SECONDS = 1
CACHE_MIDDLEWARE_ALIAS = 'default'
重新启动 nginx 服务没有帮助。我可以运行 /etc/init.d/nginx restart
并且原始文件在更改或被完全删除后仍在运行。唯一强制读取新文件并将其重新编译为 pyc 的方法是重新启动整个 VPS 实例!我可以很好地编辑模板并且更改会尽快反映出来,它唯一的 py 文件没有编译成 pyc。
其他几点:
- 我也试过
sudo /etc/init.d/nginx reload
,没有骰子
- 这是一个 AWS EC2 linux VPS 它正在运行 python 通过 nginx 而不是 apache
- 我试过了
touch <project>/wsgi.py
- Distro 是 CentOS 6.5 版(最终版),所以我也尝试了
sudo service nginx reload
和 sudo service nginx restart
。
请问有人能解释一下吗?
编辑:作为测试,我刚刚删除了一个关键的 view.py + view.pyc 文件到网站的一个子部分,15 分钟后,它仍然运行良好。
Edit2:我开始认为我只是想以不同的方式重新启动 nginx。我应该叫什么? Saving Changes To Django with Nginx?
Edit3:基于下面的 IgnacioVazquez-Abrams 帮助,发现它正在通过 ps -ef 进程使用 uwsgi。然后我发现它正在使用 supervisor 作为经理,所有适当的 conf 文件看起来都很好。然后只需重新启动 supervisor 和 BAM 文件即可立即更新。不用说,这扩展了我对 linux + python.
的了解
根据 IgnacioVazquez-Abrams 的帮助,发现 nginx
正在使用 uwsgi
通过 ps -ef 进程为 django 提供服务。在发现它正在使用 uwsgi 并找到 uwsgi conf 文件后,我做了一个 ack
搜索任何关于加载 uwsgi 文件的引用,它在 supervisor conf 文件中找到它。
然后我发现它正在使用 supervisor
作为管理器,所有适当的 conf 文件看起来都很好。然后只需重新启动 supervisor
即可立即更新 BAM 文件。不用说,这扩展了我对 linux + python.
的了解
不过这引出了一个问题,有没有更简单的方法让文件在指定的时间段或时间后自动重新加载,或者这对提高 python/django/nginx/uwsgi 堆栈的性能至关重要?
我继承了一个项目,该项目是一个运行 python/django 的网站。有一个问题,我认为 Django 正在保存内存缓存中的文件(可能)。
这是一个生产服务器。目前没有DEV环境(这是另外一回事)。
我被迫对实时网站进行请求的紧急错误修复。但是对 .py 文件的任何修改都不会反映在网站上。我什至可以完全删除 view.py(和 view.pyc)并且页面继续愉快地加载。我研究了缓存 (https://docs.djangoproject.com/en/1.3/topics/cache/),并添加了适当的虚拟缓存行:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}
我试过将缓存强制设置为 1 秒:
CACHE_MIDDLEWARE_KEY_PREFIX = ''
CACHE_MIDDLEWARE_SECONDS = 1
CACHE_MIDDLEWARE_ALIAS = 'default'
重新启动 nginx 服务没有帮助。我可以运行 /etc/init.d/nginx restart
并且原始文件在更改或被完全删除后仍在运行。唯一强制读取新文件并将其重新编译为 pyc 的方法是重新启动整个 VPS 实例!我可以很好地编辑模板并且更改会尽快反映出来,它唯一的 py 文件没有编译成 pyc。
其他几点:
- 我也试过
sudo /etc/init.d/nginx reload
,没有骰子 - 这是一个 AWS EC2 linux VPS 它正在运行 python 通过 nginx 而不是 apache
- 我试过了
touch <project>/wsgi.py
- Distro 是 CentOS 6.5 版(最终版),所以我也尝试了
sudo service nginx reload
和sudo service nginx restart
。
请问有人能解释一下吗?
编辑:作为测试,我刚刚删除了一个关键的 view.py + view.pyc 文件到网站的一个子部分,15 分钟后,它仍然运行良好。
Edit2:我开始认为我只是想以不同的方式重新启动 nginx。我应该叫什么? Saving Changes To Django with Nginx?
Edit3:基于下面的 IgnacioVazquez-Abrams 帮助,发现它正在通过 ps -ef 进程使用 uwsgi。然后我发现它正在使用 supervisor 作为经理,所有适当的 conf 文件看起来都很好。然后只需重新启动 supervisor 和 BAM 文件即可立即更新。不用说,这扩展了我对 linux + python.
的了解根据 IgnacioVazquez-Abrams 的帮助,发现 nginx
正在使用 uwsgi
通过 ps -ef 进程为 django 提供服务。在发现它正在使用 uwsgi 并找到 uwsgi conf 文件后,我做了一个 ack
搜索任何关于加载 uwsgi 文件的引用,它在 supervisor conf 文件中找到它。
然后我发现它正在使用 supervisor
作为管理器,所有适当的 conf 文件看起来都很好。然后只需重新启动 supervisor
即可立即更新 BAM 文件。不用说,这扩展了我对 linux + python.
不过这引出了一个问题,有没有更简单的方法让文件在指定的时间段或时间后自动重新加载,或者这对提高 python/django/nginx/uwsgi 堆栈的性能至关重要?