我已经inheritance了一个运行python / django的网站。 有一个问题,我相信Django在memcache(可能)保持文件。
这是一个生产服务器。 目前没有DEV环境(这是另一回事)。
我不得不对现场进行紧急修复。 但是对.py文件的任何修改都不会反映在网站上。 我甚至可以完全删除一个view.py(和view.pyc),并愉快地继续加载页面。 我已经研究过caching( https://docs.djangoproject.com/en/1.3/topics/cache/ ),并添加了适当的dummycache行:
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', } }
我试过迫使caching1秒:
CACHE_MIDDLEWARE_KEY_PREFIX = '' CACHE_MIDDLEWARE_SECONDS = 1 CACHE_MIDDLEWARE_ALIAS = 'default'
重新启动nginx服务没有帮助。 我可以运行/etc/init.d/nginx restart
,原始文件仍然在运行后被修改或完全删除。 唯一强制新文件被读取并重新编译为pyc的是重新启动整个VPS实例! 我可以编辑模板就好,改变是asap,只有py文件没有编译到pyc。
其他一些观点:
sudo /etc/init.d/nginx reload
,没有骰子。 touch <project>/wsgi.py
sudo service nginx reload
和sudo service nginx restart
。 有没有人能够阐明这一点?
编辑:作为一个testing,我刚刚删除了一个关键的view.py + view.pyc文件到网站的子部分,15分钟后,它仍然运行完美。
编辑2:我开始认为我只是想以不同的方式重新启动nginx。 我该怎么打电话? 用Nginx保存更改到Django?
Edit3:基于下面的IgnacioVazquez-Abrams帮助,发现它通过ps -ef进程使用uwsgi。 然后,我发现它使用主pipe作为经理,所有适当的conf文件看起来很好。 然后只需重新启动即时更新的主pipe和BAM文件。 不用说,这是扩展我的知识的Linux + Python。
基于IgnacioVazquez-Abrams的帮助,发现nginx
使用uwsgi
通过ps -ef进程来为django服务。 找到它使用uwsgi,并找到uwsgi配置文件,我做了一个查询搜索任何引用加载uwsgi文件,它发现它在主管conf文件。
然后,我发现它使用supervisor
作为经理,所有适当的conf文件看起来很好。 然后只需重新启动即时更新的supervisor
和BAM文件。 不用说,这是扩展我的知识的Linux + Python。
它回避了这个问题,难道没有更简单的方法让文件在指定的时间段之后自动重新加载吗?或者这对于改进python / django / nginx / uwsgi堆栈的性能至关重要?