python - django 保留缓存中的文件,删除 view.py 和 view.pyc 文件,仍然运行

标签 python linux django nginx

我继承了一个项目,该项目是一个运行 python/django 的站点。有一个问题,我认为 Django 正在保留内存缓存中的文件(可能)。

这是一个生产服务器。目前没有DEV环境(这是另外一回事)。

我被迫对实时站点进行请求的紧急错误修复。但是对 .py 文件的任何修改都不会反射(reflect)在网站上。我什至可以完全删除一个 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 实例!我可以很好地编辑模板,更改会尽快反射(reflect)出来,它唯一的 py 文件不会编译为 pyc。

其他几点:

  1. 我也试过 sudo /etc/init.d/nginx reload , 没有骰子。
  2. 这是一个 AWS EC2 linux VPS,它通过 nginx 而不是 apache 运行 python
  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 堆栈的性能至关重要?

关于python - django 保留缓存中的文件,删除 view.py 和 view.pyc 文件,仍然运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27762307/

相关文章:

python - Pandas 数据框搜索并修改邮政编码上的前导零

c - Ater 增加 sleep() fd 无法正常工作

c - 为什么 printf 在多线程程序中不起作用?

javascript - 如何让 Mailchimp 弹出窗口在 Chrome 中工作

python - 同时对索引和列重新建立索引

python - Pandas :在垃圾箱内绘制平均值 - 需要格式化帮助

python - Django:避免服务器端和客户端验证代码重复

python - Django 从文本字段中的 JSON 字符串检索 JSON 键/值

python - Python 2.7 中的线程

c++ - Linux 中的嵌套 vector