4

这是 uwsgi 配置:

[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 一会儿时,我可以看到修改后的页面,似乎只有确定worker 可以读取和响应修改后的页面,但其他人只显示旧页面,谁缓存旧页面?我没有配置任何关于缓存的内容)

我没有配置django,它与“python manager runserver ...”配合得很好,但是在使用nginx + uwsgi时会出现这个问题。

(nginx和uwsgi都是新安装的,我确定这里没有配置其他东西..)

4

2 回答 2

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

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

于 2012-09-28T00:39:38.623 回答
1

这是正常行为。uwsgi除非您重新启动它,否则不会重新读取您的代码(它不像runserver您拥有 时那样工作DEBUG=True)。

如果在你更新了你的代码之后,重新启动了 uwsgi,清除了你的浏览器缓存并且它仍然没有反映你的更改,那么你应该*.pyc从你的源目录中删除文件。

我通常使用这个:

find . -name "*.pyc" -exec rm {} \;

粗略地说,.pyc是代码的“编译”版本。如果 Python 未检测到源代码的更改,它将加载此优化版本。如果您删除这些文件;然后它将重新读取您的源文件。

于 2012-09-27T15:48:30.230 回答