CWSANDBOX_API_KEY에 저장된 CoreWeave API 액세스 토큰을 사용합니다. Forge API 키 인증에 대해서는 시작하기를 참조하세요. CKS 요구 사항은 배치 모드를 참조하세요.
이 가이드에서는 샌드박스에서 Python 함수를 실행하는 @session.function() 데코레이터를 다룹니다. 샌드박스 라이프사이클을 직접 관리하지 않고 개별 Python 연산을 격리된 환경으로 이전하려는 개발자를 대상으로 하며, 원격 함수를 정의하는 방법, API에서 지원하는 인수 및 반환 유형, 그리고 이 API가 적합한 상황을 설명합니다.
개요
함수 데코레이터 API를 사용하면 격리된 샌드박스 컨테이너에서 Python 함수를 실행할 수 있습니다. 호출 코드를 단순하게 유지하면서 개별 Python 작업을 원격으로 실행하려면 이 API를 사용하세요:기본 사용
함수 정의
@session.function() 데코레이터를 사용해 함수를 정의하세요:
함수 호출
데코레이터가 적용된 함수에서.remote()를 호출하여 샌드박스에서 실행하세요:
실행 메서드
map()으로 병렬 실행하기
여러 입력을 대상으로 실행합니다.local()로 로컬에서 실행
샌드박스 없이 로컬에서 실행할 수 있으며, 테스트에 유용합니다:인수 및 반환 값 유형
원격 함수는 인수와 반환 값을 JSON으로 전송합니다. 따라서 둘 다 JSON으로 직렬화할 수 있는 값이어야 하며, 딕셔너리, 목록, 문자열, 숫자, 불리언,None을 사용할 수 있습니다.
TypeError 예외가 발생합니다.
Example output
return value is not JSON-serializable 메시지가 표시됩니다.
JSON 객체는 문자열 키만 지원합니다. 정수, 부동소수점 또는 불리언을 키로 사용하는 딕셔너리는 변환되지 않고 거부됩니다. 따라서 샌드박스에서 함수가 받는 값의 유형은 전달한 값의 유형과 항상 일치합니다.
NumPy 배열, pandas DataFrame 또는 맞춤형 클래스 인스턴스를 사용하려면 함수를 호출하기 전에 JSON 호환 값으로 변환한 다음, 함수 내부에서 다시 원래 형태로 복원하세요.
클로저와 전역 변수
클로저 변수
함수는 자신을 둘러싼 범위의 변수를 캡처합니다:전역 변수
데코레이터는 참조된 전역 변수를 함수와 함께 직렬화합니다.컨테이너 이미지
특정 함수의 컨테이너 이미지를 재정의하세요:오류 처리
함수에서 발생한 예외는 호출자에게 전파됩니다.함수와 샌드박스 중 언제 사용할지
워크로드에 함수 데코레이터 API와 샌드박스 API 중 어느 것이 더 적합한지 결정하려면 다음 table을 사용하세요.제한 사항
함수 API는 의도적으로 단순하게 설계되었습니다. 복잡한 워크플로의 경우:- 재시도 및 백오프: 호출하는 코드에서 구현하세요.
- 작업 의존성 및 DAG: Airflow 또는 Prefect와 같은 워크플로 오케스트레이터를 사용하세요.
- 복잡한 스케줄링: 샌드박스 API를 직접 사용하세요.