PolymarketClickHouse Workshops

03 Stream data live

Jalankan collector yang tangguh dan verifikasi WebSocket, rekonsiliasi REST, dan penulisan ke Cloud.

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

Titik awal

Keenam objek polymarket sudah ada dan .env.polymarket sudah di-source.

Yang dijalankan

Satu container Python stateless:

  • menemukan lima market aktif melalui Gamma;
  • berlangganan kedua token outcome di WebSocket CLOB publik;
  • merekonsiliasi trade publik setiap 10 detik;
  • mem-polling book CLOB saat WebSocket macet; dan
  • menulis async insert yang di-acknowledge ke ClickHouse Cloud.

Tidak ada database lokal, broker, server dashboard, atau kredensial Polymarket.

Langkah 1 — Build dan jalankan collector

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

Status berubah menjadi healthy setelah discovery dan penulisan pertama ke Cloud berhasil. Status aplikasi degraded masih dianggap sehat oleh Docker bila REST tetap terkini dan WebSocket sedang melakukan reconnect.

Langkah 2 — Baca kontrak health

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

Field yang diharapkan:

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

status: degraded dengan reason: websocket_stale_rest_active masih dapat diterima jika last_trade_reconcile_at dan last_book_fallback_at terus bergerak maju. unhealthy tidak dapat diterima; gunakan Troubleshooting.

Langkah 3 — Amati event sumber dan penulisan

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

Log berformat JSON. Cari collector_ready. Kegagalan sumber atau ClickHouse menyertakan preview error yang dibatasi dan jeda retry; tidak ada password yang dicatat di log.

Langkah 4 — Buktikan baris sudah ada di 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, dan one_minute_states harus lebih besar dari nol sebelum Modul 04. trades normalnya bertambah dalam satu menit; market yang sepi bisa memperlambatnya.

Langkah 5 — Pakai mode fixture yang deterministik hanya jika perlu

Jika jaringan ruangan memblokir Polymarket atau tidak ada market terpilih yang bergerak setelah 60 detik:

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

Jalankan kembali pemeriksaan health dan jumlah baris. Status yang diharapkan: fixture; jumlah tick dan trade bertambah setiap lima detik. Simpan file backup-nya sampai modul ini berakhir.

Selesai bila

  • health bernilai live, degraded dengan timestamp REST yang segar, atau fixture;
  • watched_markets bernilai 5; dan
  • keempat jumlah baris Cloud terkembalikan, dengan baris quote dan per menit lebih besar dari nol.

Berikutnya: kueri agregat inkremental.

Di halaman ini

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.

ID