03 Stream data live
Jalankan collector yang tangguh dan verifikasi WebSocket, rekonsiliasi REST, dan penulisan ke Cloud.
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 psStatus 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.toolField 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 collectorLog 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 collectorJalankan 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,degradeddengan timestamp REST yang segar, ataufixture; watched_marketsbernilai 5; dan- keempat jumlah baris Cloud terkembalikan, dengan baris quote dan per menit lebih besar dari nol.
Berikutnya: kueri agregat inkremental.