본문 바로가기
프로그래밍언어/파이썬[Error]

[파이썬][Error] 103. BlockingIOError - [Errno 11] Resource temporarily unavailable

by about_IT 2025. 6. 1.
728x90

BlockingIOError: [Errno 11] Resource temporarily unavailable 오류는 비차단(non-blocking) 모드에서 I/O 작업이 완료되지 못했을 때 발생하는 예외입니다. 이 오류는 리소스가 일시적으로 사용 불가능하거나, 아직 준비되지 않은 상태에서 접근했을 때 나타납니다.

주로 소켓(socket), 파일 디스크립터, 파이프 등에서 비차단 모드로 설정했을 때 발생하며, 이벤트 루프 또는 셀렉터 기반 프로그래밍에서 고려해야 할 오류입니다.

● 오류 발생 예시

import socket

s = socket.socket()
s.setblocking(False)
s.connect(("example.com", 80))

위 코드처럼 소켓을 비차단 모드로 설정한 뒤 연결을 시도하면 BlockingIOError가 발생할 수 있습니다.

● 주요 원인

  • 소켓이나 파일 디스크립터가 아직 준비되지 않음
  • 비차단 모드에서 즉시 완료되지 않은 작업을 시도
  • 시스템 자원이 일시적으로 사용 불가능한 상태

● 해결 방법

  • try-except 블록으로 예외를 감지하고 재시도 로직 구현
  • select, poll, epoll 등의 이벤트 대기 메커니즘 사용
  • 자원이 준비되었을 때만 I/O 작업 수행

● 예시 코드 (예외 처리)

import socket
import time

s = socket.socket()
s.setblocking(False)

try:
    s.connect(("example.com", 80))
except BlockingIOError:
    print("연결 대기 중...")
    time.sleep(1)

● 결론

BlockingIOError는 비동기 I/O 프로그래밍에서 필연적으로 마주치는 오류로, 비차단 모드에서는 자원이 준비될 때까지 적절한 대기나 예외 처리가 필요합니다. 이를 무시하면 프로그램이 예기치 않게 종료되거나, 불완전한 처리가 발생할 수 있습니다.

728x90