在 Mac 遇到 Python Flask 網站伺服器無法啟動的問題。檢查被「AirPlay 接收器」佔用 5000 連接埠,到「系統偏好設定」關閉「AirPlay 接收器」即可解決。
錯誤狀況
在終端機輸入啟動網站伺服器的指令
% python app.py
遲遲沒有顯示以前成功啟動網站伺服器,會顯示的訊息「Running on http://xxx.xxx.xxx.xxx:5000/ (Press CTRL+C to quit)」。在瀏覽器輸入連結「http://127.0.0.1:5000/」則顯示「127.0.0.1 的存取遭拒」
問題原因
在終端機輸入指令
% lsof -i :5000
回傳結果
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ControlCe 610 USER 30u IPv4 0x6... 0t0 TCP *:commplex-main (LISTEN)
ControlCe 610 USER 31u IPv6 0x6... 0t0 TCP *:commplex-main (LISTEN)
原本 Python Flask 網站伺服器預定要使用的 5000 連接埠,被 ControlCe 佔用。查詢網站文章,瞭解 ControlCe 是 AirPlay 使用的服務 Control Center。
解決方法
到「系統偏好設定」輸入「AirPlay 接收器」(或者是「系統偏好設定」-->「共享」),在左側取消勾選,不開啟「AirPlay 接收器」
回到終端機,再次輸入指令:% lsof -i :5000
沒有回傳任何結果,確認已經關閉「AirPlay 接收器」。
再次輸入啟動 Python Flask 網站伺服器的指令:
% python app.py
可以順利看到「Running on http://xxx.xxx.xxx.xxx:5000/ (Press CTRL+C to quit)」,代表已經順利啟動網站伺服器。
再次輸入指令:
% lsof -i :5000
可以看到 Python 使用 5000 連接埠
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Python 38629 USER 3u IPv4 0x6... 0t0 TCP *:commplex-main (LISTEN)
Python 38644 USER 3u IPv4 0x6... 0t0 TCP *:commplex-main (LISTEN)
Python 38644 USER 4u IPv4 0x6... 0t0 TCP *:commplex-main (LISTEN)
留言
張貼留言