튜토리얼의 이 부분에서는 샌드박스 내부에서 명령어를 실행하고 그 출력을 캡처합니다. 다음 예시에서는 오류 확인, timeout, 작업 디렉터리 등 자주 사용하는 패턴을 보여줍니다.
# 기본 명령sandbox.exec(["echo", "Hello"]).result()# 명령이 0이 아닌 종료 코드를 반환하면 SandboxExecutionError 발생sandbox.exec(["ls", "/nonexistent"], check=True).result()# 명령이 timeout을 초과하면 SandboxTimeoutError 발생sandbox.exec(["sleep", "60"], timeout_seconds=5).result()# 특정 디렉터리에서 실행sandbox.exec(["ls"], cwd="/app").result()
각 명령어가 끝나기를 기다렸다가 다음 명령어를 시작할 필요가 없다면 여러 명령어를 병렬로 실행하세요. 명령어가 서로 독립적이라면 전체 실행 시간을 줄일 수 있습니다.
import cwsandbox# exec()는 명령이 종료될 때까지 기다리지 않고 즉시 Process를 반환합니다p1 = sandbox.exec(["sleep", "1"])p2 = sandbox.exec(["sleep", "1"])p3 = sandbox.exec(["sleep", "1"])# 출력이 필요할 때 .result()를 호출하세요 - 총 소요 시간은 3초가 아니라 약 1초입니다cwsandbox.result([p1, p2, p3])