nginx + uwsgi + django,uwsgi中似乎有一些奇怪的缓存,帮帮我

时间:2012-09-27 15:37:49

标签: python django nginx uwsgi

这是uwsgi config:

[uwsgi]  
uid = 500
listen=200
master = true  
profiler = true 
processes = 8 
logdate = true  
socket = 127.0.0.1:8000  
module = www.wsgi  
pythonpath = /root/www/
pythonpath = /root/www/www 
pidfile = /root/www/www.pid  
daemonize = /root/www/www.log  
enable-threads = true
memory-report = true
limit-as = 6048

这是Nginx配置:

server{  
    listen 80;  
    server_name 119.254.35.221;      
    location / {  
        uwsgi_pass 127.0.0.1:8000;  
        include uwsgi_params;  
    }  
}

django工作正常,但除非我重新启动uwsgi,否则无法看到修改过的页面。(更重要的是,当我配置8个工作进程时,我可以看到修改后的页面,当我按住ctrl + f5一段时间,似乎只有某个工作人员可以读取和响应修改过的页面,但是其他人只显示旧的那个,他们缓存旧页面?我没有配置任何关于缓存的内容)

我没有配置django,它适用于“python manager runserver ...”,但在使用nginx + uwsgi时遇到了这个问题。

(nginx和uwsgi都是新安装,我相信这里没有其他任何内容......)

2 个答案:

答案 0 :(得分:5)

  • uwsgi不会自动重新加载您的代码,只有开发服务器
  • runserver用于调试目的,uwsgi和nginx用于生产
  • 在生产中,您可以通过service uwsgi restart或通过init.d脚本
  • 重新启动uwsgi
  • 使用touch-reload
  • 可以更好地重新加载uwsg

通常不需要清理.pyc个文件,只有当文件上的时间戳错误时才会发生(我在整个carieer上只看过几次)

答案 1 :(得分:1)

这是正常行为。除非您重新启动代码,否则uwsgi不会重新阅读您的代码(当runserver}时,DEBUG=True不会像*.pyc那样有效。

如果您更新了代码后,重新启动了uwsgi,清除了浏览器缓存并且仍然没有反映您的更改,那么您应该从源目录中删除find . -name "*.pyc" -exec rm {} \; 个文件。

我通常使用它:

.pyc

粗略地说,{{1}}是代码的“已编译”版本。如果Python没有检测到源中的更改,Python将加载此优化版本。如果删除这些文件;然后它将重新读取你的源文件。