2016-07-05 61 views
0

私はGunicornとNginxを使用するDjangoサイトを持っています。時折、私はデバッグする必要がある問題があります。以前は、GunicornとNginxをシャットダウンし、私のDjangoプロジェクトディレクトリに行き、Django開発サーバー( "python ./manage.py runserver 0:8000")を起動し、Nginxを再起動しました。その後、set_trace()コマンドを挿入してデバッグを行うことができました。問題を解決したら、Nginxをシャットダウンし、GunicornとNginxを再起動します。私はこれが働いていたと確信しています。Nginx "Broken pipe" Djangoをデバッグするとき?

最近、私は問題が発生し始めました。今何が起きるかは、私がブレークポイントで停止したときに、数分後に停止したWebページが変更され、「404 Not Found」と表示され、デバッガで別のステップを実行するとこのエラーを参照してください:

- Broken pipe from ('127.0.0.1', 43742) 

これは私の開発、ステージング、および私が自分のドメイン名でアクセスしている運用サーバーで発生します。 "web01.example.com"(実際の例ではありません)。

私のリモートサーバ上で私のDjangoアプリケーションをデバッグする正しい方法は何ですか?

ありがとうございました。

答えて

0

問題を見つけました。まず、ブレークポイントで停止したときに、Webサーバーが応答するのに60秒以上かかると、WebサーバーへのNginx接続がタイムアウトしていることを示す、ちょうど1分後にページが常にタイムアウトしたことがわかりました。私はこのタイムアウトを定義するNginx proxy_read_timeout directiveを見つけました。あなたは、この変更するためにあなたがそれを再起動しないで、 nginxのをリロードする必要があり、この変更を行ったら

# /etc/nginx/sites-enabled/example.conf 
http { 
    server { 
      ... 
      location @django { 
       ... 
       # Set timeout to 1 hour 
       proxy_read_timeout 3600s; 
       ... 
      } 
      ... 
    } 
} 

:それは単に私のnginxの設定ファイルで、タイムアウトの長さを変えることの問題でした効果を発揮する。上記のようにDjangoを起動すると、Djangoアプリケーションをタイムアウトせずにデバッグできるようになります。デバッグが完了したら、タイムアウト設定を削除して、Nginxを再読み込みし、Gunicornを再起動してください。

関連する問題