Python으로 Web framework인 Flask를 공부하다가 발생하나 에러입니다. Flask에서 5000 포트를 사용하고 있는데 Flask 모듈이 비정상적으로 종료해서 5000 포트를 잡고 있어 발생하는 에러입니다.
에러 메시지
Traceback (most recent call last):
File "/usr/lib/python3.8/runpy.py", line 193, in _run_module_as_mainreturn _run_code(code, main_globals, None,
File "/usr/lib/python3.8/runpy.py", line 86, in _run_codeexec(code, run_globals)
(중략)
File "/usr/local/lib/python3.8/dist-packages/werkzeug/serving.py", line 996, in inner srv = make_server(
File "/usr/local/lib/python3.8/dist-packages/werkzeug/serving.py", line 847, in make_server return ThreadedWSGIServer( File "/usr/local/lib/python3.8/dist-packages/werkzeug/serving.py", line 740, in __init__HTTPServer.__init__(self, server_address, handler)
File "/usr/lib/python3.8/socketserver.py", line 452, in __init__self.server_bind()
File "/usr/lib/python3.8/http/server.py", line 138, in server_bindsocketserver.TCPServer.server_bind(self)
File "/usr/lib/python3.8/socketserver.py", line 466, in server_bindself.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use
해결 방법
flask가 생성한 process를 강제로 kill 합니다. PID를 확인하기 위해서 lsof (list open files) 명령어 열려진 socket 파일들을 보는 명령어입니다
# flask 가 생성한 pip를 확인
$ sudo lsof -i :5000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
flask 9066 kibua 3u IPv4 82012 0t0 TCP localhost:5000 (LISTEN)
python3 9069 kibua 3u IPv4 82012 0t0 TCP localhost:5000 (LISTEN)
python3 9069 kibua 4u IPv4 82012 0t0 TCP localhost:5000 (LISTEN)
# kill 명령어로 -SIGKILL(-9) 을 PID에 전달
$ sudo kill -9 9066 9069
※ 열린 인터넷 포트 확인하는 리눅스 명령어
$ netstat -tnlp
[--tcp|-t] tcp 포트
[--udp|-u] udp 포트
--numeric, -n
Show numerical addresses instead of trying to determine symbolic host, port or user names.
-p, --program
Show the PID and name of the program to which each socket belongs.
-l, --listening
Show only listening sockets. (These are omitted by default.)
(실행 결과)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 8029/python3
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
관련 글
[개발환경] - GCP (Google Cloud) 방화벽 설정: 프로토콜과 포트를 사용 허용 또는 거부하기
[모바일 SW 개발/Python] - Python: OSError: [Errno 98] Address already in use (Flask)
[개발환경] - Google Cloud Platform을 활용하여 평생 '무료' PC 만들기
[모바일 SW 개발/Python] - Python code 숨기는 방법: PyInstaller로 실행 파일 만들기
[모바일 SW 개발/Python] - Python 여러 버전 설치 방법 (3.x and 3.y 동시 설치)
[모바일 SW 개발/Python] - Python 폴더 및 파일 처리 함수 모음
[모바일 SW 개발/REST API] - Service Account(JWT)을 활용한 Google Calendar API 사용
[모바일 SW 개발/Python] - Python 에러: /usr/bin/env: `python3\r': 그런 파일이나 디렉터리가 없습니다
[모바일 SW 개발/Python] - Python 소스 숨기는 방법: pyc 활용 (Bytecode로 컴파일)
[모바일 SW 개발/Python] - Python 표준 입출력(stdin/stdout) 활용 - 리눅스 프로그램과 연동
[모바일 SW 개발/Python] - Python JSON 사용 시 TypeError: Object of type bytes is not JSON serializable
[모바일 SW 개발/Python] - Python smtplib 사용한 email 발송 예제 (gmail)
[모바일 SW 개발/Python] - Python SyntaxError: Non-ASCII character in file on, but no encoding declared
[모바일 SW 개발/Python] - Python 2.7과 3.8호환성: a bytes-like object is required, not 'str'에러 수정
댓글