window 환경에서 fastapi를 통해 개발하다 보면 이상하게 터미널이 먹통이 되어서 ctrl + c를 눌러도 서버가 꺼지지 않고 말을 안들을 때가 있다.
이게 문제가 뭐냐면 터미널을 강제 종료할 경우 서버가 종료되지 않은 상태로 유지가 된다.
다시 터미널을 켜서 로컬 서버를 다시 올려도 현재 마운트 되고 있는 서버는 이전 서버라 수정 사항이 반영되지 않는 어이없는 상황이 발생한다.
개발하다 너무 불편해서 구글링을 해본 결과 나와 비슷한 이슈를 겪고있는 사람이 정말 많았고,
그렇게 알게 된 해결방법 두 가지를 공유한다.
1. 터미널을 통해 작업중인 python 종료
이 방법은 터미널에서 명령어를 통해 현재 실행중인 python 프로그램을 모두 종료하는 방법이다.
사실 현재 사용중인 8000번 포트를 종료시키는 방법도 체크 해봤지만 python 프로그램을 종료 시키는것이 더 확실한 방법이였다.
우선 window에서 터미널을 열도록 한다. 이후 명령어를 실행시킨다.
# window에서 실행 중인 python 체크
tasklist | findstr python
# 작업중인 python을 다 죽인다.
taskkill /IM python.exe /F
taskkill 명령어를 실행하면 uvicorn이 정상적으로 종료된 것을 확인할 수 있을 것이다.
2. uvicorn 버전 다운 그레이드
사실 1번 방법은 근본적인 해결 방법은 아니다.
1번 방법을 통해 서버를 종료 시켜도 동일한 상황은 계속 반복되고,
매번 명령어를 통해 서버를 종료시키는건 여간 귀찮은 일이 아니다.
스택오버플로우를 살펴본 결과 아래와 같은 정보를 입수했다.
" 최신 Uvicorn 릴리스가 Windows 환경과 완벽하게 호환되지 않을 수 있음
잠재적인 해결책은 Uvicorn의 이전 버전으로 다운그레이드하는 것 "
이게 말이 되는건가 싶지만 진짜더라
다운그레이드 시키니까 완벽히 문제가 해결되었다.
해결 방법은 아래와 같다.
# 기존 버전 삭제
pip uninstall uvicorn
# 다운그레이드 시켜 다시 설치
pip install uvicorn==0.20.0
근데 솔직히 uvicorn측에서 빨리 해결 해줬으면 좋겠음
회사에서 개발해야하는데 버전 이슈 있으면 어쩌나 싶다...
'Framework > FastAPI' 카테고리의 다른 글
[FastAPI] 307 Temporary Redirect 오류 해결 방법 (0) | 2025.03.08 |
---|---|
[Fast-API] window 환경 uvicorn main:app --reload 안될 때 ('uvicorn'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다.) (0) | 2023.03.02 |