Skip to main content

Spakky Actuator

Spakky Framework를 위한 transport 중립 actuator 계약입니다. Health, readiness, liveness, info 상태를 HTTP나 CLI adapter와 분리된 모델로 집계합니다.

설치

pip install spakky-actuator

주요 기능

  • Health/readiness/liveness 결과: HTTP, CLI 등 adapter가 공유하는 result 계약
  • Probe 확장 지점: Spakky DI로 등록되는 동기/비동기 health probe
  • Info contributor: 동기/비동기 info contributor의 결정적 병합
  • Startup diagnostics contributor: SpakkyApplication startup 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,
    ComponentHealthResult,
)
from spakky.core.application.application import SpakkyApplication
from spakky.core.application.application_context import ApplicationContext
from spakky.core.application.plugin import Plugin
from spakky.core.pod.annotations.pod import Pod


@Pod()
class DatabaseProbe(AbstractHealthProbe):
    @property
    def name(self) -> str:
        return "database"

    def check(self) -> ComponentHealthResult:
        return ComponentHealthResult.healthy(self.name)


app = (
    SpakkyApplication(ApplicationContext())
    .load_plugins(include={Plugin(name="spakky-actuator")})
    .add(DatabaseProbe)
    .start()
)
service = app.container.get(type_=ActuatorAggregationService)
health = service.evaluate_health()
readiness = service.evaluate_readiness()

Extension Points

Component health를 제공하려면 AbstractHealthProbe 또는 AbstractAsyncHealthProbe Pod를 등록하세요. info에 metadata를 제공하려면 IInfoContributor 또는 IAsyncInfoContributor Pod를 등록하세요. Actuator 플러그인은 ActuatorExtensionPostProcessor를 추가하여 DI가 관리하는 extension Pod를 발견하고 ActuatorExtensionRegistry에 저장합니다.

from spakky.actuator import (
    AbstractHealthProbe,
    IInfoContributor,
    ActuatorEndpoint,
    ComponentHealthResult,
)
from spakky.core.pod.annotations.pod import Pod


@Pod()
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)


@Pod()
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를 추가할 수 있습니다.

개발 검증

패키지 단위 검증은 해당 패키지 디렉토리에서 실행합니다.

uv run ruff format .
uv run ruff check .
uv run pyrefly check
uv run pytest

pytest는 각 패키지 pyproject.toml의 coverage 설정을 사용합니다.

라이선스

MIT License

Metadata

Release files for spakky-actuator 8.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spakky-actuator 8.1.0
File Size Uploaded
spakky_actuator-8.1.0.tar.gz 7.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for spakky-actuator 8.1.0
File Interpreter ABI Platform
spakky_actuator-8.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.6 kB

Release files / spakky_actuator-8.1.0.tar.gz

Download URL spakky_actuator-8.1.0.tar.gz
Size 7.6 kB
Tags Source
SHA-256 checksum
How to use checksums
8ee24aab18e0a3c2b93afb2138d78730932f1179ac4097a498881e8f0e0a5d9d
BLAKE2b-256 checksum
How to use checksums
4f0caf35f69cfda01d4d2f1fc13ed7ac52e4815fcc00ee2b4a2b81a05106ceb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.

Transparency log

Release files / spakky_actuator-8.1.0-py3-none-any.whl

Download URL spakky_actuator-8.1.0-py3-none-any.whl
Size 12.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
029562046909aafb7a427b14957e488d7d81055fd8231d277be7310ffd4f8898
BLAKE2b-256 checksum
How to use checksums
59e4b8ef124f07a44e501ea2090b25006c7f7d363587cee46e592a7cbc7ecaa1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

8.1.0 This release

2 release files

8.0.0

2 release files

7.2.0

2 release files

7.1.1

2 release files

7.1.0

2 release files

7.0.0

2 release files

6.13.0

2 release files

6.12.0

2 release files

6.11.0

2 release files

6.10.1

2 release files

6.10.0

2 release files

6.9.1

2 release files

6.9.0

2 release files

6.8.0

2 release files

6.7.0

2 release files

6.6.1

2 release files

6.6.0

2 release files

6.5.0

2 release files

6.4.0

2 release files

6.3.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page