nginx と gunicorn と Djangoでページを作ったら、
重いファイルをアップロードするときにめちゃくちゃ時間かかってタイムアウトした話。
タイムアウトの設定を変えましょう。
Django
Djangoはviewsに処理が書いてあるはずですが、
chunkで処理していれば大丈夫っぽいです。
nginx
とりあえずnginxのタイムアウト処理を変えましょう。
(略)
http {
(略)
proxy_read_timeout 300;
}
(略)
httpの中に、proxy_read_timeoutを追加します。今回は5分にしました。
参考:Nginx設定のまとめ
参考:お名前.com VPS にNginxでWordPressを構築。設定の意味もまとめた
gunicorn
gunicorn起動時に引数をわたすだけでした。
gunicorn hogehoge.wsgi --bind=0.0.0.0:8000 -t 300
あらまぁ簡単。
余談:エラーログ
・nginxのerror log
エラーログどこに書き出されるんでしょう?
その設定は、nginx.confの上部に書かれているはずです。
/var/log/nginx/error.log
別のターミナルを開いて、tail /var/log/nginx/error.log
とすると、後ろ数行がターミナルで確認できます。errorlog開いたまま、アプリを実行してどんなログが出されるか確認しましょう。
・gunicornのerror log
gunicornのエラーログも引数で指定できます。
--log-level=DEBUG
をしていしてやると、エラーログがはきだされます。