Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python nginx+;uwsgi&x2B;django,uwsgi中似乎有一些奇怪的缓存,帮帮我_Python_Django_Nginx_Uwsgi - Fatal编程技术网

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

Python nginx+;uwsgi&x2B;django,uwsgi中似乎有一些奇怪的缓存,帮帮我,python,django,nginx,uwsgi,Python,Django,Nginx,Uwsgi,这是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 = /ro

这是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键一段时间时,我可以看到修改过的页面,似乎只有某些工作者可以读取和响应修改过的页面,但其他人只显示旧页面,谁缓存了旧页面?我没有配置任何关于缓存的内容)

我没有配置django,它可以很好地与“python manager runserver…”配合使用,但在使用nginx+uwsgi时遇到了这个问题


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

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

如果在更新代码、重新启动uwsgi、清除浏览器缓存后,它仍然不能反映您的更改,那么您应该从源目录中删除
*.pyc
文件

我通常使用以下方法:

find . -name "*.pyc" -exec rm {} \;
粗略地说,
.pyc
是代码的“编译”版本。如果Python没有检测到源代码中的更改,它将加载此优化版本。如果删除这些文件,它将重新读取源文件。

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

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

非常感谢您的帮助!我应该在开发和调试项目时使用manager.py吗?是的;仅在部署时使用uwsgi+nginx。
runserver
是专门为开发而开发的。这是预期的行为,Apache(例如在嵌入式模式下)行为类似。我使用的是
uwsgi-emperon
而不是
uwsgi
守护进程,因此我不得不发布
sudo服务uwsgi-emperon-reload
。我选择只使用manage.py runserver进行开发;因为它是为这种用途而构建的。