Python SDK
cronbark 파이썬 패키지는 REST API를 감싼 얇은 래퍼입니다.
컨텍스트 매니저 · 데코레이터 · 함수 호출 세 가지 스타일을 지원합니다.
⚠️
현재 베타 프리뷰 (v0.0.1) 입니다. Python 3.9+ 필요.
설치
pip install cronbark자세한 설치 방법(pipx, uv 등)은 설치 페이지 참고.
설정
환경변수 (권장)
export CRONBARK_TOKEN=your-api-token
export CRONBARK_URL=https://api.cronbark.com코드에서 직접 설정
import cronbark
cronbark.configure(
token="your-api-token",
base_url="https://api.cronbark.com",
)환경변수와 configure() 둘 다 있으면 configure()가 우선합니다.
사용법
1) 컨텍스트 매니저 — 가장 권장
블록을 with로 감싸면 자동으로 start → 성공 시 success, 예외 시 fail이 호출됩니다.
import cronbark
with cronbark.monitor(token="YOUR_TOKEN"):
run_backup()
process_data()
# ↑ 블록이 정상 종료하면 success, 예외가 나면 fail (에러 메시지 자동 첨부)토큰을 환경변수로 설정했다면 생략 가능:
with cronbark.monitor():
run_backup()2) 데코레이터
함수를 통째로 모니터링할 때.
import cronbark
@cronbark.job(token="YOUR_TOKEN")
def generate_report():
fetch_data()
build_report()
send_email()
generate_report() # 자동으로 start → success / fail3) 수동 호출
세밀한 제어가 필요할 때 직접 이벤트를 보낼 수 있습니다.
import cronbark
TOKEN = "YOUR_TOKEN"
cronbark.start(token=TOKEN)
try:
run_job()
cronbark.success(token=TOKEN, output="OK")
except Exception as e:
cronbark.fail(token=TOKEN, error_message=str(e))함수 레퍼런스
| 함수 | 용도 |
|---|---|
cronbark.monitor(token=None) | 컨텍스트 매니저 — with 블록용 |
cronbark.job(token=None) | 데코레이터 — 함수 감싸기용 |
cronbark.start(token=None) | 실행 시작 (수동) |
cronbark.success(token=None, output=None, metrics=None) | 성공 보고 |
cronbark.fail(token=None, error_message=None, output=None) | 실패 보고 (output에 stdout/stderr 첨부 가능) |
cronbark.tick(token=None) | 한 번의 성공 보고 (start 없이, 하트비트용) |
cronbark.ping(token=None) | start + success를 한 번에 |
cronbark.configure(token=None, base_url=None, timeout=10) | 전역 설정 |
실전 예제
예외 상세까지 전송
import traceback
import cronbark
try:
cronbark.start()
risky_work()
cronbark.success()
except Exception as e:
cronbark.fail(
error_message=str(e),
output=traceback.format_exc(),
)
raiseDjango management command
# management/commands/daily_backup.py
from django.core.management.base import BaseCommand
import cronbark
class Command(BaseCommand):
def handle(self, *args, **options):
with cronbark.monitor():
# 기존 백업 로직
self.run_backup()하트비트 (start 이벤트 없이)
# 매 1분마다 "아직 살아있음"만 알리고 싶을 때
import cronbark
cronbark.tick()