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。

其他几点:

  1. 我也试过sudo /etc/init.d/nginx reload,没有骰子
  2. 这是一个 AWS EC2 linux VPS 它正在运行 python 通过 nginx 而不是 apache
  3. 我试过了touch <project>/wsgi.py
  4. Distro 是 CentOS 6.5 版(最终版),所以我也尝试了 sudo service nginx reloadsudo 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 堆栈的性能至关重要?