Python, TypeScript, Go, Ruby SDK와 내구성 계층인 Postgres를 지원하는 백그라운드 작업, AI 에이전트 및 내구성 있는 워크플로 오케스트레이션 엔진입니다.
piercefreeman/waymark
Postgres만 인프라로 사용하는, 재시작과 충돌에도 유지되는 백그라운드 워크플로와 액션을 위한 Python 라이브러리입니다.
- 스타
- 87
- 포크
- 5
- 열린 이슈
- 92
- 마지막 커밋
- 18시간 전
어떤 프로젝트인가요?
Waymark는 서버 재시작, 태스크 충돌, 장시간 실행 작업 중에도 계속 진행되는 백그라운드 태스크를 만들기 위한 라이브러리입니다. 인프라 의존성은 Postgres뿐이며, 첫 번째로 지원하는 언어는 Python입니다. 일반적인 async Python 함수를 액션으로 작성하면 워커 노드에서 분산 실행되고, 루프, 조건문, 병렬 분기 같은 일반적인 제어 흐름으로 액션을 조율하는 워크플로를 작성할 수 있습니다.
워크플로는 Python 소스의 run() 메서드에서 중간 표현으로 한 번 컴파일된 뒤, 진행 상태를 Postgres에 스냅샷으로 저장하는 Rust 런타임에서 실행됩니다. 충돌이 발생한 워크플로는 중단된 지점부터 재개되며, 복구 중에는 원래 워크플로 코드를 다시 실행하지 않습니다. 이러한 설계 때문에 워크플로에서는 지원되는 패턴을 사용해야 하며, time이나 uuid처럼 비결정적인 호출은 명시적인 액션으로 감싸야 합니다.
프로젝트에는 waymark-executor 프로세스가 제공하는 내장 웹앱이 포함되어 있으며, 여기서 워크플로 인스턴스, 호출 타임라인, 노드 부하를 확인할 수 있습니다. 호출별 재시도 정책과 타임아웃, 내구성 있는 sleep, cron 또는 interval 스케줄도 지원합니다. 아직 1.0 이전 버전이며, 하위 호환성이 보장되기 전까지는 프로덕션에서 사용하지 말 것을 유지관리자들이 권고합니다.
핵심 기능
- 01충돌이나 재시작 후 마지막 상태부터 재개되는 내구성 있는 워크플로
- 02분산 워커에서 실행되는 액션과 호출별 재시도 정책 및 타임아웃
- 03루프, 조건문, 병렬 작업을 위한 asyncio.gather 등 일반적인 Python 제어 흐름
- 04재시작 후에도 유지되는, 몇 초에서 며칠까지 설정 가능한 sleep
- 05별도 인프라 없이 사용할 수 있는 cron 및 interval 스케줄
- 06워크플로 인스턴스와 노드 부하를 확인하는 내장 웹앱
활용 사례
- 이메일을 묶음으로 보내거나 재시도 및 fan-out을 적용해 서드파티 API 호출
- 배포나 충돌에도 안정적으로 완료되어야 하는 데이터베이스 작업 실행
- 별도의 태스크 브로커 없이 주기적인 데이터 동기화 예약
- Postgres 기반 Python 앱에서 여러 단계로 구성된 비동기 프로세스 조율
빠른 시작
- 1
uv로 패키지를 설치합니다
uv add waymark - 2
webapp을 활성화한 상태로 Postgres 데이터베이스에 연결하는 node를 시작합니다
export WAYMARK_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/waymark export WAYMARK_HTTP_ENABLED=true uv run waymark-executor
사용 전 알아둘 점
- README에는 사양이 빠르게 변경되고 1.0.0 이전에는 하위 호환성이 보장되지 않으므로 아직 프로덕션 환경에서 사용하지 말라고 안내되어 있습니다.
- 현재 지원되는 언어는 Python뿐입니다.
- 100ms 미만의 처리가 필요한 지연 시간에 민감한 작업이나, 동시에 약 1만 개를 초과하는 작업을 조율해야 하는 용도에는 적합하지 않습니다.
토픽
자주 묻는 질문
- waymark은(는) 무엇인가요?
- Postgres만 인프라로 사용하는, 재시작과 충돌에도 유지되는 백그라운드 워크플로와 액션을 위한 Python 라이브러리입니다. Waymark는 서버 재시작, 태스크 충돌, 장시간 실행 작업 중에도 계속 진행되는 백그라운드 태스크를 만들기 위한 라이브러리입니다. 인프라 의존성은 Postgres뿐이며, 첫 번째로 지원하는 언어는 Python입니다. 일반적인 async Python 함수를 액션으로 작성하면 워커 노드에서 분산 실행되고, 루프, 조건문, 병렬 분기 같은 일반적인 제어 흐름으로 액션을 조율하는 워크플로를 작성할 수 있습니다.
- waymark은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- waymark은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- waymark은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. waymark의 마지막 커밋은 2026년 11월 6일입니다.
- waymark은(는) 어디에 사용할 수 있나요?
- 이메일을 묶음으로 보내거나 재시도 및 fan-out을 적용해 서드파티 API 호출 배포나 충돌에도 안정적으로 완료되어야 하는 데이터베이스 작업 실행 별도의 태스크 브로커 없이 주기적인 데이터 동기화 예약 Postgres 기반 Python 앱에서 여러 단계로 구성된 비동기 프로세스 조율
- waymark는 어떻게 설치하나요?
- uv로 패키지를 설치합니다: uv add waymark webapp을 활성화한 상태로 Postgres 데이터베이스에 연결하는 node를 시작합니다: export WAYMARK_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/waymark export WAYMARK_HTTP_ENABLED=true uv run waymark-executor
- waymark은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/piercefreeman/waymark
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
Postgres에 상태를 체크포인트로 저장해 프로그램에 내구성 있는 워크플로와 작업 큐를 추가하는 Python 라이브러리입니다.
cron, interval, calendar 및 일회성 트리거와 선택적 영속 작업 저장소를 지원하는 Python 작업 스케줄러 및 작업 큐 라이브러리입니다.
Python용 분산 작업 큐로, 백그라운드 작업을 실행하고 워커와 메시지 브로커에 작업을 분배합니다.
스케줄링, 재시도, 우선순위 큐와 웹 UI를 지원하는 Redis 기반 분산 작업 큐용 Go 라이브러리입니다.
재시도와 흐름 제어를 지원하며 서버리스, 서버, 엣지에서 스텝 함수와 백그라운드 작업, AI 워크플로를 실행하는 내구성 있는 워크플로 엔진입니다.