7.3 KiB
7.3 KiB
Level 1 Auto-Retry - TQQQ 배포
배포일: 2026-02-05 상태: ✅ 실전 배포 완료
개요
TQQQ 15분 모니터링에 Level 1 Auto-Retry 시스템을 적용하여 Yahoo Finance API 일시적 장애 시 자동 복구 가능하게 개선.
배포 내용
1. 래퍼 스크립트 생성
파일: ~/openclaw/scripts/tqqq-monitor-with-retry.js
const { executeWithNotifications } = require('../lib/auto-retry');
async function fetchTQQQ() {
return new Promise((resolve, reject) => {
exec(`${CONFIG.PYTHON_SCRIPT} ${CONFIG.SYMBOL}`, {
timeout: 15000,
maxBuffer: 10 * 1024 * 1024
}, (error, stdout, stderr) => {
if (error) {
if (error.killed || error.signal === 'SIGTERM') {
error.code = 'ETIMEDOUT';
}
reject(error);
} else {
resolve({output: stdout, stderr, duration});
}
});
});
}
const result = await executeWithNotifications(
fetchTQQQ,
{
maxRetries: 3,
backoff: 'exponential',
discordWebhook: CONFIG.DISCORD_WEBHOOK,
taskName: 'TQQQ 15분 모니터링'
}
);
특징:
- Python 스크립트 (
~/openclaw/skills/yahoo-finance/yf TQQQ) 래핑 - 타임아웃 에러 자동 분류 (
ETIMEDOUT) - 최대 3회 재시도 (exponential backoff)
- Discord 알림 (재시도 중/성공/실패)
- JSONL 로그 (
~/openclaw/logs/auto-retry.jsonl)
2. 실행 테스트
$ node ~/openclaw/scripts/tqqq-monitor-with-retry.js
📊 TQQQ 15분 모니터링 (with Auto-Retry)
✅ Success after 1 attempt(s)
✅ Success
Attempts: 1
Duration: 1912ms
Script execution: 1912ms
📈 TQQQ POSTPOST
╭─────────────────┬───────────────────╮
│ 항목 │ 값 │
├─────────────────┼───────────────────┤
│ 현재가 (USD) │ $49.76 │
│ 현재가 (KRW) │ ₩72,507 │
│ 전일 종가 │ $52.52 │
│ 변동 (전일比) │ ▼ $2.76 (-5.26%) │
│ 일중 범위 │ $48.43 ~ $52.15 │
│ 일중 범위 (KRW) │ ₩70,569 ~ ₩75,989 │
│ 거래량 │ 140,842,191 │
│ 환율 │ $1 = ₩1,457.13 │
╰─────────────────┴───────────────────╯
⚠️ 5.3% 변동 - 주의 필요!
결과: ✅ 첫 시도 성공 (1.9초)
3. Cron 설정 업데이트
파일: ~/.openclaw/cron/jobs.json
변경 사항:
- Cron ID:
c55df4d3-9dd8-490b-b835-0cea8e744476 - 이름: "TQQQ 15분 모니터링"
- 스케줄:
*/15 * * * *(15분마다)
변경 전:
~/openclaw/skills/yahoo-finance/yf TQQQ
변경 후:
node ~/openclaw/scripts/tqqq-monitor-with-retry.js
효과
Before (재시도 없음)
API 타임아웃 → ❌ 즉시 실패 → Discord 에러 알림 → 수동 재실행 필요
After (Level 1 적용)
API 타임아웃 → 🔄 자동 재시도 (1초 대기) → ✅ 성공
→ 🔄 재시도 2 (2초 대기) → ✅ 성공
→ 🔄 재시도 3 (4초 대기) → ✅ 성공
→ ❌ 최종 실패 (3회 후)
예상 개선율:
- 일시적 네트워크 장애: 90% 자동 복구
- 사람 개입 필요: 10%로 감소 (현재 100% → 10%)
로그 확인
# 실시간 모니터링
tail -f ~/openclaw/logs/auto-retry.jsonl
# 최근 TQQQ 실행 기록
jq -r 'select(.context.symbol == "TQQQ")' ~/openclaw/logs/auto-retry.jsonl | tail -10
# 재시도 성공 건수
jq -r 'select(.type == "success" and .attempts.length > 1)' ~/openclaw/logs/auto-retry.jsonl | wc -l
다음 적용 대상
우선순위 1 (외부 API 의존)
- GitHub Watcher (
~/openclaw/skills/github-watcher/check.sh) - Market Volatility (시장 급변 감지)
- 일일 주식 브리핑
우선순위 2 (네트워크 의존)
- Trend Hunter
- 매일 뉴스 분석
- GitHub 트렌드 감시
우선순위 3 (안정성 중요)
- 월급날 정기투자 알림
- 환율 모니터링
검증 포인트
1주차 검증 (2026-02-05 ~ 02-12)
- 재시도 발생 횟수 확인 (로그 분석)
- 자동 복구 성공률 측정
- Discord 알림 정상 작동 확인
- 최종 실패 건수 확인
2주차 확장 (2026-02-12 ~ 02-19)
- 다른 cron에 적용 (3-5개)
- 설정 최적화 (backoff, maxRetries)
3주차 안정화 (2026-02-19 ~ 02-26)
- 전체 cron 적용
- Level 2 설계 (파라미터 자동 조정)
기술 상세
에러 분류
재시도 가능 (Retryable):
- Network:
ETIMEDOUT,ECONNRESET,ENOTFOUND,EAI_AGAIN,ECONNREFUSED - HTTP: 408, 429, 500, 502, 503, 504
재시도 불가 (Non-retryable):
- HTTP: 400, 401, 403, 404
- File:
ENOENT - Logic: 기타 모든 에러
Backoff 전략
Exponential (기본):
Attempt 1: 즉시
Attempt 2: 1초 후
Attempt 3: 2초 후
Attempt 4: 4초 후
Attempt 5: 8초 후
Discord 알림 형식
재시도 중 (Orange):
🔄 재시도 중
TQQQ 15분 모니터링 (시도 2/3)
에러: Request timeout
카테고리: timeout
다음 시도: 2000ms 후
성공 (Green):
✅ 재시도 성공
TQQQ 15분 모니터링 (2번째 시도에서 성공)
최종 실패 (Red):
❌ 최종 실패
TQQQ 15분 모니터링 (3회 시도 후 실패)
제안: Network timeout - check connection or increase timeout
파일 목록
~/openclaw/
├── scripts/
│ └── tqqq-monitor-with-retry.js (새로 생성)
├── lib/
│ └── auto-retry.js (공통 라이브러리)
├── logs/
│ └── auto-retry.jsonl (자동 생성)
├── docs/
│ ├── auto-retry-integration.md (통합 가이드)
│ └── level1-tqqq-deployment.md (이 문서)
└── examples/
├── demo-retry.js (데모)
└── auto-retry-usage.js (사용 예시)
설정
CONFIG (tqqq-monitor-with-retry.js):
{
PYTHON_SCRIPT: '~/openclaw/skills/yahoo-finance/yf',
SYMBOL: 'TQQQ',
MAX_RETRIES: 3,
BACKOFF: 'exponential',
DISCORD_WEBHOOK: '~/.openclaw/monitoring.json',
POSITION: {
avgPrice: 50.79,
shares: 137,
totalInvested: 10096898
},
STRATEGY: {
stopLoss: 47.00, // -7.5%
buyMore: 49.26, // -3%
takeProfit: 52.31 // +3%
}
}
주의사항
-
Python 스크립트 변경 금지
- 기존
~/openclaw/skills/yahoo-finance/yf스크립트는 변경하지 않음 - 래퍼만 추가하는 방식으로 호환성 유지
- 기존
-
Cron 실행 주기
- 15분마다 실행 (
*/15 * * * *) - 최악의 경우 재시도로 최대 7초 소요 (1+2+4)
- 15분 간격이므로 충분한 여유
- 15분마다 실행 (
-
Discord 알림
- 재시도 발생 시에만 알림 (성공 시 조용)
- 최종 실패 시 빨간색 알림
- 알림 spam 방지 (15분당 최대 1회)
-
로그 관리
- JSONL 형식으로 누적 (rotate 필요 시 별도 설정)
- 위치:
~/openclaw/logs/auto-retry.jsonl - 일주일 후 용량 확인 예정
상태: ✅ 배포 완료, 실전 모니터링 시작 다음: 1주일 후 효과 분석 및 다른 cron 적용 검토