PENDING 상태에서 시작하고, container가 프로비저닝되는 동안 CREATING 상태로 이동한 다음, 사용할 준비가 되면 RUNNING 상태가 됩니다.
메인 command와 함께 샌드박스를 시작하면 해당 command가 샌드박스의 메인 프로세스가 됩니다. 메인 프로세스가 종료되면 샌드박스는 COMPLETED(종료 코드 0) 또는 FAILED(시작 또는 실행 중 오류)와 같은 종료 상태로 들어갑니다. 샌드박스는 외부에서 중지되거나 최대 수명을 초과한 경우 TERMINATED 상태가 될 수도 있습니다.
샌드박스 상태
| State | Description |
|---|---|
| PENDING | 샌드박스 요청이 접수되었으며 스케줄링을 기다리고 있습니다. |
| CREATING | container를 프로비저닝하는 중입니다. |
| RUNNING | 샌드박스가 오퍼레이션을 수행할 준비가 되었습니다. |
| COMPLETED | 메인 프로세스가 종료 코드 0으로 성공적으로 종료되었습니다. |
| FAILED | 샌드박스 또는 메인 프로세스에서 시작 또는 실행 중 오류가 발생했습니다. |
| TERMINATED | 샌드박스가 외부에서 중지되었거나 최대 수명을 초과하여 종료되었습니다. |
준비 완료 또는 완료 시점까지 기다리기
Sandbox.wait()를 사용하여 샌드박스를 사용할 수 있을 때까지 기다리세요.Sandbox.wait_until_complete()를 사용하여 샌드박스의 메인 프로세스가 끝날 때까지 기다리세요.
샌드박스가 시작될 때까지 기다리기
Sandbox.wait()를 사용하면 샌드박스가 RUNNING 상태에 도달할 때까지 명시적으로 기다릴 수 있습니다. 이 방법은 시작 문제를 디버깅하거나, 시작 실패와 이후 명령에서 발생하는 오류를 구분하려는 경우에 유용합니다.
예를 들어, 다음 코드는 샌드박스를 생성하고, 준비될 때까지 기다린 다음 명령을 실행합니다.
샌드박스 완료까지 기다리기
Sandbox.wait_until_complete()를 사용하세요.
Sandbox.run("python", "train.py")와 같은 메인 명령로 샌드박스를 시작하고, 샌드박스의 라이프사이클이 해당 명령의 실행에 맞춰지도록 하려는 경우에 유용합니다.
메인 프로세스가 종료되면 샌드박스는 종료 상태에 들어갑니다. 성공적인 run은 일반적으로 COMPLETED로 끝납니다. 프로세스가 실패하면 샌드박스는 FAILED 상태에 들어갈 수 있습니다.
대신 명령을 대화형으로 실행해야 하는 경우 Sandbox.exec()와 함께 컨텍스트 관리자를 사용하세요:
명시적 라이프사이클 제어
Sandbox.wait() 및 Sandbox.stop()과 같은 방법을 사용하세요.
대부분의 경우 이러한 방법을 직접 호출할 필요는 없습니다. Sandbox.exec(), Sandbox.read_file(), Sandbox.write_file()와 같은 오퍼레이션은 준비될 때까지 자동으로 기다리며, 컨텍스트 관리자(with Sandbox.run() as sandbox:)는 블록을 벗어날 때 샌드박스를 자동으로 중지합니다.
샌드박스 중지
Sandbox.stop()를 사용하세요.