Python 함수 시작
Python 함수 저장소에서는 functions.api의 데코레이터와 타입 선언으로 플랫폼 함수를 등록합니다. Workshop이나 온톨로지 앱에 사용하는 함수들을 같은 저장소에 묶는 구성이 비용을 줄이는 방식으로 권장됩니다.
저장소와 기본 함수
프로젝트의 + New > Repository에서 Python functions 템플릿을 선택합니다.
템플릿의 python-functions/python/python-functions/my_function.py를 엽니다. 기본 예제는 다음과 같습니다.
from functions.api import function, String
@function
def my_function() -> String:
return "Hello World!"
등록할 함수에는 @function이 있어야 합니다. 여러 Python 파일에 여러 함수를 둘 수 있지만 이 데코레이터가 없는 함수는 플랫폼 함수로 등록하지 않습니다.
모든 인수와 반환 타입을 선언해야 하며 API 타입이나 대응 Python 타입을 사용할 수 있습니다. 위의 String 대신 str도 가능합니다. API 타입으로 선언해도 런타임에는 대응 Python 값이 전달되므로 String 인수는 str입니다.
추가 Python 패키지는 Libraries 패널에서 구성합니다.
시간 계산 함수 추가
같은 파일에 아래 함수를 추가할 수 있습니다. elapsed_millis는 초가 아니라 밀리초입니다.
from datetime import datetime, timedelta
@function
def add_milliseconds_to_datetime(start_time: datetime, elapsed_millis: int) -> str:
return (start_time + timedelta(milliseconds=elapsed_millis)).isoformat()
이 파일은 앞의 function import를 함께 사용합니다. 시간 값을 실제로 더한 뒤 ISO 문자열을 반환합니다. int 입력은 기본으로 함수 Integer로 등록되므로 그 범위를 따릅니다.
미리보기
Functions 도우미의 Live Preview에서 my_function 또는 새로 추가한 add_milliseconds_to_datetime을 선택하고 값을 넣어 Run으로 실행할 수 있습니다.
커밋과 게시
Source control에서 변경을 검토하고 메시지와 함께 Commit합니다. master의 Branches에서 Tags and releases > New tag를 열고 버전을 지정합니다.
Tag and release가 끝나면 Code 탭의 Functions 도우미에서 게시한 함수를 확인합니다.
함수와 입력을 선택하여 게시한 버전을 실행할 수 있습니다.
플랫폼 사용에서 함수 결과를 앱에 연결하고, Python만 지원하는 Pipeline Builder 호출과 일반 온톨로지 앱 호출의 차이를 구분해야 합니다.