yQuant

script-reporter

자동화 스크립트 및 크론 작업을 위한 가볍고 의존성 없는 Python 상태 리포터. 콘솔, Discord, Telegram에 동시 리포팅

Python 자동화 모니터링 Discord Telegram CI/CD

자동화 스크립트와 크론 작업을 위해 설계된 가볍고 외부 의존성이 없는 Python 상태 리포터입니다. 콘솔, Discord, Telegram에 실행 진행 상황, 단계, 결과를 쉽게 리포팅하세요.

#주요 기능

  • 외부 의존성 없음: Python 표준 라이브러리만 사용(urllib)
  • 멀티 채널: 콘솔, Discord(Webhooks), Telegram(Bot API)에 동시 리포팅
  • 단계 추적: 스크립트의 현재 위치 정확히 모니터링(예: SETUPPROCESSINGCOMPLETE)
  • 오류 투명성: 실패 시 자동으로 traceback 첨부
  • 실행 시간 추적: 실행 시간 자동 계산 및 리포팅
  • CI/CD 및 Cron 친화적: 로그를 위한 표준화된 JSON 출력으로 다른 도구에서 파싱 용이

#설치

pip install script-reporter

#빠른 시작

#간단한 사용 (자동 감지)

채널 활성화를 위해 환경 변수 설정:

  • REPORTER_DISCORD_WEBHOOK: Discord 웹후크 URL
  • REPORTER_TELEGRAM_TOKEN & REPORTER_TELEGRAM_CHAT_ID: 텔레그램 봇 토큰 및 채팅 ID
from script_reporter import ScriptReporter
import traceback

# 제목으로 초기화 (환경 변수에서 Discord/Telegram 자동 감지)
sr = ScriptReporter("내 자동화 작업")

try:
    # 진행 단계 추적
    sr.stage("DATA_FETCH")
    # ... 로직 ...

    sr.stage("PROCESSING")
    # ... 로직 ...

    # 선택적 상세 딕셔너리와 함께 성공 리포트
    sr.success({"items_processed": 100, "status": "all_good"})

except Exception:
    # traceback과 함께 실패 리포트
    sr.fail(traceback.format_exc())

#수동 구성

환경 변수 없이 어댑터를 명시적으로 제어:

from script_reporter import ScriptReporter, ConsoleAdapter, DiscordAdapter, TelegramAdapter

adapters = [
    ConsoleAdapter(),
    DiscordAdapter(webhook_url="https://discord.com/api/webhooks/..."),
    TelegramAdapter(token="BOT_TOKEN", chat_id="CHAT_ID")
]

sr = ScriptReporter("수동 구성 작업", adapters=adapters)
sr.success({"msg": "Hello from code!"})

#JSON 로그 형식

ConsoleAdapter는 기계가 읽을 수 있는 JSON 라인을 출력합니다:

__RESULT__ {"title": "내 작업", "host": "server-01", "stage": "COMPLETE", "status": "SUCCESS", "duration": "1m 30s", "detail": {"processed": 5}}

#사용 사례

  • Cron 작업: 예약된 작업 실행 모니터링
  • CI/CD 파이프라인: 빌드 로그에서 결과 파싱
  • 장기 실행 스크립트: 단계별 진행 상황 추적
  • 자동화 워크플로우: 실패 시 알림 수신

Share this post