이 문서에서는 Python 3.13부터 Azure Functions에서 도입한 중요한 Python 기능 업데이트를 간략하게 설명합니다. 이러한 변경 사항에는 런타임 버전 관리, 성능 향상 및 몇 가지 제거된 기능이 포함됩니다.
Python 런타임 버전 제어
Python 3.13부터 Functions는 앱에서 사용하는 특정 버전의 Functions Python 런타임을 대상으로 지정할 수 있는 새로운 옵트인 기능인 런타임 버전 제어를 도입했습니다.
버전 제어를 사용하도록 설정하지 않으면 앱은 Functions에서 관리되는 Python 런타임의 기본 버전에서 계속 실행됩니다. requirements.txt 파일을 수정하여 릴리스된 최신 버전, 미리 출시된 버전을 요청하거나 특정 버전의 Python 런타임에 앱을 고정할 수 있어야 합니다.
Python 런타임 패키지에 대한 참조를 requirements.txt 파일에 추가하여 런타임 버전 제어를 사용하도록 설정합니다. 여기서 패키지에 할당된 값에 따라 사용된 런타임 버전이 결정됩니다.
requirements.txt 추가한 특정 참조는 다음 값 중 하나일 수 있는 Python 프로그래밍 모델에 따라 달라집니다.
| 모델 버전 | 패키지 이름 |
|---|---|
| v2 | azure-functions-runtime |
| v1 | azure-functions-runtime-v1 |
이 표는 requirements.txt 파일의 이 설정의 버전 값을 기반으로 하는 버전 관리 방식을 나타냅니다.
| 버전 | 예시 | 행동 |
|---|---|---|
| 값이 설정되지 않음 | azure-functions-runtime |
Python 3.13 이상 앱은 사용 가능한 최신 버전의 Functions Python 런타임에서 실행됩니다. 이 옵션은 앱이 안정적인 최신 런타임 업데이트를 자동으로 수신하므로 플랫폼 개선 및 기능을 최신 상태로 유지하는 데 가장 적합합니다. |
| 특정 버전에 고정됨 | azure-functions-runtime==1.2.0 |
Python 3.13 이상 앱은 고정된 런타임 버전에 유지되며 자동 업데이트를 받지 않습니다. 대신 고정된 버전을 수동으로 업데이트하여 런타임의 새로운 기능, 수정 및 개선 사항을 활용해야 합니다. 고정은 안정성과 예측 가능성이 필수적인 중요한 프로덕션 워크로드에 권장됩니다. 또한 고정을 사용하면 개발 중에 미리 출시된 런타임 버전에서 앱을 테스트할 수 있습니다. |
| 패키지 참조 없음 | n/a | 설정 azure-functions-runtime하지 않으면 Python 3.13 이상 앱이 최신 릴리스 버전 뒤에 있는 Python 런타임의 기본 버전에서 실행됩니다. 업데이트는 Functions에 의해 주기적으로 이루어집니다. 이 옵션은 안정성과 광범위한 호환성을 보장합니다. 그러나 최신 기능 및 수정에 대한 액세스는 기본 버전이 업데이트될 때까지 지연됩니다. |
Python 3.13 이상 앱에서 런타임 버전 제어를 사용할 때는 다음 사항을 고려해야 합니다.
- 시험판(알파, 베타 또는 개발) 런타임 버전에 프로덕션 앱을 고정하지 마세요.
- 정기적으로 Python 런타임 릴리스 정보를 검토하여 앱의 Python 런타임에 적용되는 변경 내용을 인식하거나 고정된 버전을 업데이트할 시기를 결정합니다.
Python 3.13에서 도입된 기타 변경 사항 및 개선 사항
Python 3.13은 성능 및 안정성을 향상시키고 런타임 동작에 영향을 주는 몇 가지 향상된 기능을 Functions에 도입했습니다.
이제 종속성 격리가 기본적으로 사용하도록 설정됨
이제 앱은 전체 종속성 격리를 활용할 수 있습니다. 즉, 앱에 Python 작업자가 사용하는 종속성(예: azure-functions 또는 grpcioPython 런타임이 내부적으로 다른 버전을 사용하더라도 앱에서 자체 버전을 사용할 수 있습니다)이 포함됩니다.
이 격리는 버전 충돌을 방지하고 사용자 지정 패키지와의 호환성을 향상시킵니다.
콜드 스타트 성능 향상
Python 3.13은 Python 3.11에 비해 콜드 시작 시간을 측정 가능한 감소로 제공하므로 앱 시작 속도가 빨라집니다.
Orjson 지원으로 더 빠른 JSON 처리
이제 Functions는 Rust로 작성된 고성능 JSON 라이브러리인 Orjson자동 사용을 지원합니다. 앱의 종속성에 포함된 경우 Orjson 런타임은 코드를 변경하지 않고도 JSON 직렬화 및 역직렬화에 자동으로 사용합니다.
사용은 Orjson HTTP API 호출 및 이벤트 처리와 같이 JSON이 많은 워크로드에 대해 더 낮은 대기 시간과 더 높은 처리량을 제공할 수 있습니다. 이전 버전과의 호환성을 보장하기 위해 표준 json 라이브러리는 사용할 수 없는 경우에 Orjson 사용됩니다.
HTTP 스트리밍에 대한 간소화된 옵트인
- 이제 앱 설정 또는 기타 구성을 변경하지 않고 도 HTTP 스트리밍 기능을 사용할 수 있습니다. 함수 수준에서 옵트인해야 하지만 더 이상 기능을 사용하기 위해 설정을 추가할
PYTHON_ENABLE_INIT_INDEXING필요가 없습니다.
Python에서 제거된 기능 지원
이러한 기능은 Python 3.13 이상 버전을 사용하는 경우 Functions에서 더 이상 지원되지 않습니다.
- 작업자 확장: 사용자 지정 작업자 확장은 Python 3.13 이상 런타임과 호환되지 않습니다. 앱이 이러한 확장을 사용하는 경우 지원되는 대안을 사용하여 다시 평가하거나 마이그레이션해야 합니다.
- 공유 메모리: 큰 페이로드 최적화에 사용되는 공유 메모리 기능은 Python 3.13부터 사용할 수 없습니다. 기본적으로 모든 통신은 이제 gRPC 기반 메시징을 사용합니다.