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 を再起動しない限り表示されません。ワーカーは変更されたページを読み取って応答できますが、他の人は古いページをキャッシュするだけで、古いページを表示しますか?私はキャッシュについて何も設定しませんでした)

私はdjangoを設定しませんでした。それは「python manager runserver ...」でうまく動作しますが、nginx + uwsgiで作業するとこの問題が発生します。

(nginx と uwsgi はどちらも新規インストールです。ここでは他に何も構成されていないと確信しています..)

4

2 に答える 2

5
  • uwsgi はコードを自動的にリロードせず、開発サーバーのみがリロードします
  • runserver はデバッグ用、uwsgi と nginx は本番用
  • service uwsgi restart本番環境では、init.d スクリプトまたは 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 に答える