Transport-neutral actuator health and info contracts for Spakky Framework
Project description
Spakky Actuator
Spakky Framework를 위한 transport 중립 actuator 계약입니다.
설치
pip install spakky-actuator
주요 기능
- Health/readiness/liveness 결과: HTTP, CLI 등 adapter가 공유하는 result 계약
- Probe 확장 지점: Spakky DI로 등록되는 동기/비동기 health probe
- Info contributor: 동기/비동기 info contributor의 결정적 병합
- Startup diagnostics contributor:
SpakkyApplicationstartup report를 actuator info로 노출 - 예외 처리: Probe 예외를 구조화된 에러 상세가 포함된 비정상 component result로 변환
- Transport 중립 core: FastAPI, Typer, plugin adapter 의존성 없음
Endpoint Semantics
| Surface | Meaning | Default behavior |
|---|---|---|
health |
operator-facing status check용 aggregate application health | ActuatorEndpoint.HEALTH를 endpoints에 포함하는 probe 평가 |
readiness |
app이 traffic 또는 work를 받을 준비가 되었는지 | readiness probe 평가; 필수 unhealthy probe가 있으면 결과 unhealthy |
liveness |
process/framework 생존 여부 | 외부 dependency readiness와 분리; custom liveness probe가 없으면 healthy baseline 반환 |
info |
결정적 application metadata | 등록된 info contributor를 contributor 이름 기준으로 병합 |
기본적으로 health probe는 liveness가 아니라 health와 readiness에 참여합니다.
외부 의존성을 사용할 수 없다는 이유로 실패하면 안 되는 프로세스 내부 check에만 ActuatorEndpoint.LIVENESS를 사용하세요.
빠른 시작
from spakky.actuator import (
AbstractHealthProbe,
ActuatorAggregationService,
ActuatorExtensionRegistry,
ComponentHealthResult,
)
class DatabaseProbe(AbstractHealthProbe):
@property
def name(self) -> str:
return "database"
def check(self) -> ComponentHealthResult:
return ComponentHealthResult.healthy(self.name)
registry = ActuatorExtensionRegistry()
registry.register_health_probe(DatabaseProbe())
service = ActuatorAggregationService(registry)
health = service.evaluate_health()
readiness = service.evaluate_readiness()
Extension Points
Component health를 제공하려면 AbstractHealthProbe 또는 AbstractAsyncHealthProbe Pod를 등록하세요.
info에 metadata를 제공하려면 IInfoContributor 또는 IAsyncInfoContributor Pod를 등록하세요.
Actuator 플러그인은 ActuatorExtensionPostProcessor를 추가하여 해당 Pod를 발견하고 ActuatorExtensionRegistry에 저장합니다.
from spakky.actuator import (
AbstractHealthProbe,
IInfoContributor,
ActuatorEndpoint,
ComponentHealthResult,
)
class ProcessProbe(AbstractHealthProbe):
@property
def name(self) -> str:
return "process"
@property
def endpoints(self) -> tuple[ActuatorEndpoint, ...]:
return (ActuatorEndpoint.LIVENESS,)
def check(self) -> ComponentHealthResult:
return ComponentHealthResult.healthy(self.name)
class BuildInfo(IInfoContributor):
@property
def name(self) -> str:
return "build"
def contribute_info(self) -> dict[str, object]:
return {"version": "1.0.0"}
Backend plugin은 자신이 소유한 외부 의존 상태를 first-party probe/contributor로 등록합니다. 예를 들어 spakky-redis는 Redis 연결 상태와 cache metrics를 actuator health/info에 연결합니다. 애플리케이션은 transport adapter를 바꾸지 않고 같은 계약으로 자체 check를 추가할 수 있습니다.
라이선스
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spakky_actuator-6.5.0.tar.gz.
File metadata
- Download URL: spakky_actuator-6.5.0.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d83d6a851674ad8b72b19d8b679d6c32866eeca75d3ddaf0af0be0662725609
|
|
| MD5 |
0971a48e53007a1c8c48483d9e2f4035
|
|
| BLAKE2b-256 |
1f77fdda7d78cc27da219041c025b66bc30b833c759d77aa4e43bd694a5365fb
|
Provenance
The following attestation bundles were made for spakky_actuator-6.5.0.tar.gz:
Publisher:
release.yml on E5presso/spakky-framework
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spakky_actuator-6.5.0.tar.gz -
Subject digest:
0d83d6a851674ad8b72b19d8b679d6c32866eeca75d3ddaf0af0be0662725609 - Sigstore transparency entry: 1437042331
- Sigstore integration time:
-
Permalink:
E5presso/spakky-framework@86c1d43bdc948ac432f27efeeeb2b56692d18ee4 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/E5presso
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86c1d43bdc948ac432f27efeeeb2b56692d18ee4 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file spakky_actuator-6.5.0-py3-none-any.whl.
File metadata
- Download URL: spakky_actuator-6.5.0-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f8a4e80fb7e7012da4650dc46132bc1b373e59228bb6e1555810b382b6756bf
|
|
| MD5 |
31b7f80e0c2885d8989ffcf5047b4344
|
|
| BLAKE2b-256 |
8c67337e1d4895ac7d5e532eab68e400bd7f2d774295117a9ed3d6d3fa7ff359
|
Provenance
The following attestation bundles were made for spakky_actuator-6.5.0-py3-none-any.whl:
Publisher:
release.yml on E5presso/spakky-framework
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spakky_actuator-6.5.0-py3-none-any.whl -
Subject digest:
1f8a4e80fb7e7012da4650dc46132bc1b373e59228bb6e1555810b382b6756bf - Sigstore transparency entry: 1437042344
- Sigstore integration time:
-
Permalink:
E5presso/spakky-framework@86c1d43bdc948ac432f27efeeeb2b56692d18ee4 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/E5presso
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86c1d43bdc948ac432f27efeeeb2b56692d18ee4 -
Trigger Event:
workflow_dispatch
-
Statement type: