03 Stream live data
복원력 있는 collector를 실행하고 WebSocket, REST 정합화, Cloud 쓰기를 검증합니다.
시작 지점
여섯 개 polymarket 객체가 존재하고 .env.polymarket이 source되어 있습니다.
무엇이 시작되는가
상태 없는 Python 컨테이너 하나:
- Gamma를 통해 활성 시장 다섯 개를 탐색합니다;
- 공개 CLOB WebSocket에서 양쪽 결과 토큰을 구독합니다;
- 10초마다 공개 거래를 정합화합니다;
- WebSocket이 멈추면 CLOB book을 폴링합니다; 그리고
- 확인 응답을 받는 비동기 삽입으로 ClickHouse Cloud에 씁니다.
로컬 데이터베이스, 브로커, 대시보드 서버, Polymarket 자격 증명은 없습니다.
Step 1 — collector 빌드 및 시작
docker compose --env-file .env.polymarket up -d --build collector
docker compose --env-file .env.polymarket ps탐색이 끝나고 첫 Cloud 쓰기가 성공하면 상태가 healthy로 바뀝니다. REST가 최신이고 WebSocket이
재연결 중이라면 애플리케이션 상태가 degraded여도 여전히 Docker 기준으로는 healthy입니다.
Step 2 — 헬스 계약 읽기
curl --fail --silent http://localhost:8090/health \
| python3 -m json.tool예상 필드:
{
"status": "live",
"websocket": "connected",
"queue_depth": 0,
"queue_capacity": 10000,
"watched_markets": 5,
"watched_tokens": 10,
"fresh_tokens": 10
}last_trade_reconcile_at와 last_book_fallback_at가 계속 전진한다면 reason: websocket_stale_rest_active와 함께 나오는 status: degraded는 허용됩니다. unhealthy는 허용되지
않으며, Troubleshooting을 사용하세요.
Step 3 — 소스 및 쓰기 이벤트 관찰
docker compose --env-file .env.polymarket logs --tail=30 collector로그는 JSON입니다. collector_ready를 찾으세요. 소스 또는 ClickHouse 실패에는 길이가 제한된
오류 미리보기와 재시도 지연이 포함되며, 비밀번호는 로그에 남지 않습니다.
Step 4 — 행이 Cloud에 있음을 증명
clickhouse client \
--host "$CLICKHOUSE_HOST" \
--port "$CLICKHOUSE_PORT" \
--user "$CLICKHOUSE_USER" \
--password "$CLICKHOUSE_PASSWORD" \
--secure \
--query "
SELECT 'markets' AS table, count() AS rows FROM polymarket.markets
UNION ALL
SELECT 'quote_midpoints', countIf(midpoint > 0) FROM polymarket.price_ticks
UNION ALL
SELECT 'trades', count() FROM polymarket.trades_clean
UNION ALL
SELECT 'one_minute_states', count() FROM polymarket.market_midpoints_1m
"Module 04 전에 markets, quote_midpoints, one_minute_states는 0보다 커야 합니다. trades는
보통 1분 안에 늘어나지만, 조용한 시장에서는 늦어질 수 있습니다.
Step 5 — 필요할 때만 결정적 픽스처 모드 사용
강의실 네트워크가 Polymarket을 차단하거나, 60초가 지나도 선택된 시장이 전혀 움직이지 않는 경우:
sed -i.bak 's/^POLYMARKET_MODE=.*/POLYMARKET_MODE=fixture/' .env.polymarket
set -a; source ./.env.polymarket; set +a
docker compose --env-file .env.polymarket up -d --build --force-recreate collector헬스와 행 수 확인을 다시 실행하세요. 예상 상태: fixture. tick과 trade 수가 5초마다 증가합니다.
모듈이 끝날 때까지 백업 파일을 보관하세요.
완료 조건
- 헬스가
live, 신선한 REST 타임스탬프를 가진degraded, 또는fixture이다; watched_markets가 5이다; 그리고- 네 개의 Cloud 행 수가 모두 반환되고, quote와 1분 행 수가 0보다 크다.
다음: 증분 집계를 쿼리합니다.