長い分析処理などかける場合に、ローカル環境なら問題ないですが httpサーバーを経由しての実装となるとwebサーバー側で1分以上の接続は強制的にタイムアウトされてしまいます。
静的ページならNginx部分だけで問題ないですが、動的なアプリケーションでwebサービスとして運用する場合はアプリサーバー側でも設定しないとうまくいかなかったのでメモ。
WEBサーバー | Nginx |
---|---|
OS | CentOS7 |
アプリケーションサーバ | uWSGI |
フレームワーク | Flask |
# /etc/nginx/conf.d/nginx.conf proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; uwsgi_read_timeout 600;
Nginxのタイムアウト変更設定の検索でよく出るのが上記4項目ですが、uWSGIとNginxを紐づけるには最後のuwsgi_read_timeoutが必要です。
ここでは1カウント=1秒なので600カウント→10分間まで接続を継続させます。
# app/uwsgi.ini harakiri = 600
uWSGIの設定ファイルは各環境によって異なると思いますが、自分はアプリディレクトリ内にログファイルと一緒に置いてます。
harakiriオプションをここでも600とします。しかしharakiriて名前・・・