PolymarketClickHouse Workshops

03 Thu nhận dữ liệu trực tiếp

Chạy collector có khả năng chịu lỗi và kiểm chứng WebSocket, việc đối chiếu qua REST và các lần ghi lên Cloud.

Your computer
macOS terminal: Run workshop commands in Terminal using zsh or bash.

Điểm khởi đầu

Sáu đối tượng polymarket đã tồn tại và .env.polymarket đã được source.

Những gì được khởi động

Một container Python không lưu trạng thái:

  • khám phá năm thị trường đang hoạt động thông qua Gamma;
  • đăng ký cả hai token kết quả trên CLOB WebSocket công khai;
  • đối chiếu các giao dịch công khai mỗi 10 giây;
  • poll CLOB book khi WebSocket bị treo; và
  • ghi các async insert đã được xác nhận vào ClickHouse Cloud.

Không có database cục bộ, broker, dashboard server, hay thông tin đăng nhập Polymarket nào.

Bước 1 — Build và khởi động collector

docker compose --env-file .env.polymarket up -d --build collector
docker compose --env-file .env.polymarket ps

Trạng thái chuyển thành healthy sau khi khám phá xong và lần ghi thành công đầu tiên lên Cloud. Trạng thái ứng dụng degraded vẫn được Docker coi là healthy khi REST còn mới và WebSocket đang kết nối lại.

Bước 2 — Đọc hợp đồng health

curl --fail --silent http://localhost:8090/health \
  | python3 -m json.tool

Các trường mong đợi:

{
  "status": "live",
  "websocket": "connected",
  "queue_depth": 0,
  "queue_capacity": 10000,
  "watched_markets": 5,
  "watched_tokens": 10,
  "fresh_tokens": 10
}

status: degraded kèm reason: websocket_stale_rest_active là chấp nhận được nếu last_trade_reconcile_at và last_book_fallback_at tiếp tục tiến lên. unhealthy thì không chấp nhận được; hãy dùng phần Xử lý sự cố.

Bước 3 — Quan sát các sự kiện nguồn và ghi dữ liệu

docker compose --env-file .env.polymarket logs --tail=30 collector

Log ở dạng JSON. Hãy tìm collector_ready. Các lỗi từ nguồn hoặc từ ClickHouse có kèm một đoạn xem trước lỗi giới hạn độ dài và độ trễ trước khi thử lại; không mật khẩu nào được ghi log.

Bước 4 — Chứng minh rằng dữ liệu đã có trên 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
  "

markets, quote_midpoints và one_minute_states phải lớn hơn không trước khi sang Module 04. trades thường tăng lên trong vòng một phút; một thị trường ít giao dịch có thể làm nó chậm hơn.

Bước 5 — Chỉ dùng chế độ fixture tất định khi cần thiết

Nếu mạng trong phòng chặn Polymarket hoặc không thị trường nào đã chọn biến động sau 60 giây:

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

Chạy lại các bước kiểm tra health và số dòng. Trạng thái mong đợi: fixture; số tick và số giao dịch tăng lên mỗi năm giây. Giữ file backup cho đến khi module kết thúc.

Hoàn thành khi

  • health là live, degraded với timestamp REST còn mới, hoặc fixture;
  • watched_markets bằng 5; và
  • cả bốn số đếm dòng trên Cloud đều trả về, với số dòng quote và số dòng một phút lớn hơn không.

Tiếp theo: truy vấn aggregate tăng dần.

Trên trang này

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

VI