종료 시간이 너무 오래 걸리는 경우 타임아웃 기능
특정 기능을 완료하는 데 시간이 너무 오래 걸리는 상황을 방지하려면 시간 초과 메커니즘을 구현할 수 있습니다. 여기에는 미리 결정된 시간이 지나면 예외를 발생시키는 신호 처리기를 사용하여 경보를 설정하는 작업이 포함됩니다. 이 방법은 UNIX 환경에 특히 유용합니다.
이 메커니즘을 활용하는 방법은 다음과 같습니다.
import errno import os import signal import functools class TimeoutError(Exception): pass def timeout(seconds=10, error_message=os.strerror(errno.ETIME)): def decorator(func): def _handle_timeout(signum, frame): raise TimeoutError(error_message) @functools.wraps(func) def wrapper(*args, **kwargs): signal.signal(signal.SIGALRM, _handle_timeout) signal.alarm(seconds) try: result = func(*args, **kwargs) finally: signal.alarm(0) return result return wrapper return decorator
from timeout import timeout # Timeout a long running function with the default expiry of 10 seconds. @timeout def long_running_function(): ... # Timeout after 5 seconds @timeout(5) def another_long_running_function(): ...
이렇게 하면 @timeout으로 장식된 모든 기능이 지정된 시간 초과 기간을 초과하는 경우 중단됩니다.
위 내용은 장기 실행 프로세스를 방지하기 위해 시간 초과 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!