Timeout
Timeout (긴 실행 작업 자동 종료)
Timeout은 오래 걸리는 연산을 정해진 시간 안에 끝나지 않으면 자동으로 중단하게 해주는 모듈이에요.
출처: Ruby 3.3 API
본문
요약(Synopsis)
require 'timeout'
status = Timeout.timeout(5) {
# Something that should be interrupted if it takes more than 5 seconds...
}
설명(Description)
Timeout은 고정된 시간 안에 끝나지 않는 잠재적으로 오래 걸리는 연산을 자동 종료하는 방법을 제공해요. 이전 버전에서는 네임스페이싱(모듈)을 사용하지 않았지만, 하위 호환성을 위해 timeout이 제공돼요. Timeout.timeout을 사용하는 편을 권장해요.
timeout(sec, klass = nil, message = nil) { |sec| ... }
블록 안의 연산을 수행하고, 이 연산이 sec초보다 오래 걸리면 오류를 던져요.
sec- 블록이 종료되길 기다릴 초 수예요. 분수 초를 위한 Float을 포함해 어떤 숫자든 사용 가능해요.0이나nil은 타임아웃 없이 블록을 실행해요.klass- 블록이sec초 안에 종료되지 않으면 던질 Exception 클래스예요. 생략하면 기본값인Timeout::Error가 사용돼요.message- 던져질 오류의 메시지예요. 생략하면 기본값인"execution expired"가 사용돼요.
블록이 sec초 안에 끝나면 블록의 결과를, 그렇지 않으면 klass 값에 기반한 예외를 던져요.
주의할 점이 있어요. 블록을 종료시키기 위해 던져지는 예외는 klass를 명시적으로 주지 않는 한 블록 안에서 rescue할 수 없어요. 다만 블록은 ensure를 사용해 예외 처리로부터 빠져나오는 걸 막을 수 있어요.
그리고 라이선스 관련 표기는 이렇습니다. Copyright © 2000 Network Applied Communication Laboratory, Inc. / Copyright © 2000 Information-technology Promotion Agency, Japan.