03 Transmitir dados ao vivo
Execute o coletor resiliente e verifique WebSocket, reconciliação REST e gravações no Cloud.
Ponto de partida
Os seis objetos polymarket existem e .env.polymarket está carregado.
O que é iniciado
Um único container Python sem estado:
- descobre cinco mercados ativos pelo Gamma;
- assina os tokens de ambos os resultados no WebSocket CLOB público;
- reconcilia negociações públicas a cada 10 segundos;
- consulta livros CLOB quando o WebSocket trava; e
- grava inserções assíncronas confirmadas no ClickHouse Cloud.
Não há banco local, broker, servidor de dashboard nem credencial do Polymarket.
Etapa 1 — Construir e iniciar o coletor
docker compose --env-file .env.polymarket up -d --build collector
docker compose --env-file .env.polymarket psO status muda para healthy depois da descoberta e da primeira gravação bem-sucedida no Cloud. Um
status de aplicação degraded ainda é considerado saudável pelo Docker se o REST estiver atual e
o WebSocket estiver reconectando.
Etapa 2 — Ler o contrato de saúde
curl --fail --silent http://localhost:8090/health \
| python3 -m json.toolCampos esperados:
{
"status": "live",
"websocket": "connected",
"queue_depth": 0,
"queue_capacity": 10000,
"watched_markets": 5,
"watched_tokens": 10,
"fresh_tokens": 10
}status: degraded com reason: websocket_stale_rest_active é aceitável se
last_trade_reconcile_at e last_book_fallback_at continuarem avançando. unhealthy não é
aceitável; consulte a Solução de problemas.
Etapa 3 — Observar eventos da origem e de gravação
docker compose --env-file .env.polymarket logs --tail=30 collectorOs logs são JSON. Procure collector_ready. Falhas da origem ou do ClickHouse incluem uma prévia
limitada do erro e o intervalo da nova tentativa; nenhuma senha é registrada.
Etapa 4 — Comprovar que as linhas estão no 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 e one_minute_states devem ser maiores que zero antes do Módulo 04.
trades normalmente cresce dentro de um minuto; um mercado parado pode atrasá-lo.
Etapa 5 — Usar o modo fixture determinístico apenas quando necessário
Se a rede da sala bloquear o Polymarket ou nenhum mercado selecionado se mover após 60 segundos:
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 collectorRepita as verificações de saúde e contagem. Status esperado: fixture; as contagens de ticks e
negociações aumentam a cada cinco segundos. Mantenha o backup até o fim do módulo.
Concluído quando
- a saúde for
live,degradedcom timestamps REST recentes oufixture; watched_marketsfor 5; e- as quatro contagens do Cloud retornarem, com linhas de cotação e por minuto maiores que zero.
Próximo: consultar a agregação incremental.