Korak E — pokretanje bulk fetch-a

2026-05-20 infra

Petogodišnji klines fetch za 68 simbola × 4 intervala. Bind mount dodat da keš preživi restart kontejnera.

↑ Svi izveštaji ← Faza 5.1 — schema migracija za exchange Izbor kandidata za auto-trader →

Status: pokrenuto u pozadini

PID nije zabeležen (snap docker container nema ps), ali job se vidi kao Python proces u crypto_scanner-web-1 containeru i log raste live.

Šta je pre-fetch infrastrukture odrađeno

1. Proširena tools/history_cache/build_klines_cache.py

2. docker-compose.yml dopuna

web:
  volumes:
    - ./reports:/app/reports
    - ./database:/app/database  # NEW
celery_worker:
  volumes:
    - ./reports:/app/reports
    - ./database:/app/database  # NEW

3. Smoke test pre full fetch-a

Procena vremena

Per simbol per interval batch-evi (limit=1000 po fetch-u):

Ukupno za 68 simbola: ~16,000 fetches × 350ms = ~95 minuta (1.5-2h, ne 7h kako plan kaže — manje simbola).

Bottleneck je 15m interval (~70 min, 75% ukupnog vremena).

Monitoring komande

Tail log iz lokalnog hosta (preko ssh):

ssh kimi@192.168.2.88 "tail -f ~/crypto_scanner/reports/analysis/klines_cache_bulk_2026-05-20.log"

DB veličina i row counts (za sanity check tokom run-a):

ssh kimi@192.168.2.88 "ls -lh ~/crypto_scanner/database/klines_cache.db && sudo docker exec crypto_scanner-web-1 sqlite3 /app/database/klines_cache.db 'SELECT interval, COUNT(DISTINCT symbol), COUNT(*) FROM klines GROUP BY interval'"

Sledeći koraci (post-fetch)

Faza 2 (invasive — promena _build_context):

  1. Novi src/klines_provider.py — cache-first read sa Binance fallback za rupe
  2. Hook u generator_manager._build_context() da puni context['klines'] iz cache-a
  3. Validacija: pre/posle compare jedan generator backfill — broj signala mora biti identičan

Faza 3 (low risk):

Faza 4 (opciono, najveći speedup):

Provenance

Izvor: crypto_scanner/reports/analysis/2026-05-20_korak_e_klines_cache_launch.md