FlaskでWebからのアクセスはOKだが、クライアントスクリプトから実行すると503エラーが発生する場合の対処法
どうやっても、503が発生したため、調査対応をおこなった。
結論
python.exe自体が残っていたため、スクリプトの切断/再実行ではNGだった。
注意点
以下で誤ったプロセスを終了させると、システムが不安定になる可能性があります。 終了する前に、プロセスが何をしているのか必ず確認してください。
ポートの競合は、他の原因が考えられる場合もあります。上記の手順で解決しない場合は、以下の点を考慮してください。
ファイアウォール: ファイアウォール設定が原因で、クライアントスクリプトからのアクセスがブロックされている可能性があります。
ネットワーク設定: ネットワークの設定に問題がある可能性があります。
Flaskアプリケーションのコード: アプリケーションのコードに誤りがある可能性があります。
原因の特定:ポートの競合
このエラーは、通常、Flaskアプリケーションが使用するポートが、他のプロセスによって既に占有されていることが原因です。
解決手順
-
ポートの使用状況を確認する
コマンドプロンプトまたはPowerShellを開く
以下のコマンドを実行するnetstat -aon | findstr :<ポート番号>
<ポート番号> の部分を、Flaskアプリケーションが使用しているポート番号に置き換えてください。
例: Flaskが5000番ポートを使用している場合、netstat -aon | findstr :5000 となります。
- PID(プロセスID)を確認する
上記のコマンド実行結果の末尾に表示される数字がPIDです。
TCP 0.0.0.0:54231 0.0.0.0:0 LISTENING 1234
このPID(上記例:1234)は、ポートを占有しているプロセスを一意に識別する番号です。
- タスクマネージャでプロセスを確認、KILL
ポートを占有しているプロセスが不要な場合、タスクマネージャからそのプロセスを終了するもしくは
taskkill /PID /F
2で確認したPIDに置き換えてください。