본문 바로가기
오늘의 삽질... 에러모음

[Flask] Address already in use. Port 5000 is in use by another program.

by 요호유후 2025. 2. 24.
반응형

Flask 실습 중 발생한 포트 에러

근데 5000포트로 몇 번 실행됐었는데... ????? 꿈이였나????

 

에러사항

파이썬에서 Flask 설치 후 기초적인 실습을 진행했었다. 그 때까지만 해도 5000 포트로 진행했었는데

아래의 코드로 작성 후 실행하니 갑자기 5000 포트가 이미 사용 중이라고 에러 메시지 떴다.

# 실행코드

from flask import Flask, request, Response

app = Flask(__name__) # 서버 구축

...

@app.route('/test')
def test():
    url = 'http://127.0.0.1:5000/submit'
    data = 'test data'
    response = requests.post(url=url, data=data)
    return Response("Successfully submitted", status=200)
    
...
[에러메시지]

* Serving Flask app 'app'
* Debug mode: on

Address already in use
Port 5000 is in use by another program. Either identify and stop that program, or start the server with a different port.
On macOS, try disabling the 'AirPlay Receiver' service from System Preferences -> General -> AirDrop & Handoff.

 

실습하면서 flask run()을 너무 남발했나 싶어서 웹 브라우저도 다 끄고 해봤는데도 똑같은 에러메시지가 떴다.

 

에러원인

오~~~~래전부터 개발자들이 5000 포트를 로컬 개발에 사용해 왔었는데

2021년 하반기에 애플이 맥OS Monterey(버전12) 릴리즈를 하면서 5000 포트를 사용하게 된 것!!!

에러메시지에도 나와있듯 'AirPlay' 연결 포트로 5000번 포트를 사용하고 있다.

참고링크 : https://medium.com/pythonistas/port-5000-already-in-use-macos-monterey-issue-d86b02edd36c

This new version of macOS has “hijacked our cute little port — 5000" from us. ㅋ

 

그래서 AirPlay 연결을 끊어주거나 5000번 포트 말고 다른 번호를 써야한다.

 

 

해결

나는 그냥 5000번에 연결된걸 끊어주고 5000번 포트로 실습을 진행했다.

 

① 먼저 5000번 포트를 사용하는 PID(Process ID)를 확인한다.

lsof -n -i TCP:5000

 

그럼 아래와 같이 사용중인 프로세스와 PID 값이 조회된다.

COMMAND   PID
ControlCe    number

 

근데 반전은 난 python에서 5000번 포트를 사용하고 있다고 조회됐었다.

 

예상했던대로 뭔가 flask run()을 남발하면서 발생한것 같은데... 

 

② 연결 중인 프로세스를 끊어준다.

kill -9 [PID number]
ex. kill -9 12345

 

이렇게하면 우리의 cute little 5000 port를 다시 사용할 수 있다!!!

 

 

글을 정리하며...

근데 블로그 찾아보니까 ControlCe로 조회되면 아무리 kill을 해도 다시 연결된다고 하는데...

cute little 5000번을 포기해야하는건가... ?

다른 아무 번호를 쓰면 안 되는걸까? 궁금하니까 찾아봐야지

 

 

참고링크 : https://algoroot.tistory.com/44

 

 

 

 

반응형

댓글