#!/usr/bin/env bash # Bithumb 캔들 증분 수집 (cron 1분, DOWNLOAD_SYMBOLS 전체) set -euo pipefail # shellcheck source=scripts/_cron_env.sh source "$(dirname "$0")/_cron_env.sh" ensure_cron_log_dir "data/common" LOCKDIR="data/common/download.lock.d" DL_SCRIPT="${CRON_PROJECT_ROOT}/scripts/00_download.py" # 7종목 증분 — 20분 초과 시 hung 으로 간주. 패턴은 이 프로젝트의 절대 경로로 한정 # (다른 프로젝트(Binance 등)의 scripts/00_download.py 와 pgrep/pkill 이 섞이지 않도록) if ! acquire_cron_lock "$LOCKDIR" "$DL_SCRIPT" 1200; then exit 0 fi PYTHON="$(resolve_bithumb_python)" || exit 1 # 절전·재부팅 복귀 시: 증분 범위(200봉)를 넘는 공백이 있으면 필요한 분봉·일수만 먼저 백필 (공백 없으면 ~0.1초) "$PYTHON" "${CRON_PROJECT_ROOT}/scripts/00_backfill_gaps.py" || echo "$(date '+%Y-%m-%d %H:%M:%S') [WARN] 공백 백필 실패 — 증분 수집은 계속 진행" >&2 # 인자가 없으면: 매분 핵심 분봉(1,3,5,15)만, 5분 배수 분에는 DOWNLOAD_INTERVALS 전체. # 1분봉 전략의 캔들 지연을 줄이기 위한 분할 (환경변수 DOWNLOAD_CORE_INTERVALS 로 조정) if [ "$#" -eq 0 ]; then minute="$(date +%M)" if [ $((10#$minute % 5)) -ne 0 ]; then CORE="${DOWNLOAD_CORE_INTERVALS:-1,3,5,15}" echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] core intervals only: ${CORE}" "$PYTHON" "$DL_SCRIPT" --intervals "$CORE" exit 0 # 핵심 분봉 회차 종료 (EXIT 트랩이 lock 정리) fi fi "$PYTHON" "$DL_SCRIPT" "$@"