はじめに
はじめてのAzure App Serviceで手探り状態で色々試している中で、
Azureの公式ドキュメントだけでは解決しなかった情報を残しておきます。
Azure App Serviceのリクエストタイムアウト設定が30秒なのか?
リクエストタイムアウト設定は230秒になっているようです。
Azure での Web アプリのアプリケーションパフォーマンスに関するよくあるご質問 - 230 秒後に要求がタイムアウトになるのはなぜですか?
30秒でタイムアウトするのはなぜ?
デフォルト設定のままデプロイすると30秒経過で502エラーが返ってきます。
最終的にこれが気付くポイントでした。
下記の設定で動いているとばっかり思っていて、600秒の設定かと思ってたら違いました。
こう書いてあったからここは疑わずに時間を取られてしまった。。。
Azure App Service 向けの Linux Python アプリを構成する - Flask アプリ
もしやと思いgunicornのドキュメントを見ると、
gunicornのworkerのタイムアウト設定はデフォルト30秒です。
gunicorn - Settings - timeout
え?もしかしてデフォルト設定なのでは?
解決
下記に従い、timeout設定を50秒にしてみたところ
Azure App Service 向けの Linux Python アプリを構成する - スタートアップ コマンドのカスタマイズ
time.sleep(40)を仕込んでみたけど、30秒で502エラーが返らなくなった!
最後に
英語サイトとかも調べまくったけど、
公式を鵜呑みにしてはいけないという教訓を得ました。
最終的には状況証拠をもとにいろいろ試すことが大事ですね。
実体とドキュメントが合致していないことは間々あります。