PolymarketClickHouse Workshops

03 Transmitir dados ao vivo

Execute o coletor resiliente e verifique WebSocket, reconciliação REST e gravações no Cloud.

Seu computador
Terminal do macOS: Execute os comandos do workshop no Terminal usando zsh ou bash.

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 ps

O 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.tool

Campos 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 collector

Os 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 collector

Repita 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, degraded com timestamps REST recentes ou fixture;
  • watched_markets for 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.

Nesta página

Acompanhar seu progresso?

Opcional. Enviaremos um link por e-mail para confirmar seu endereço; o progresso será registrado depois que você o abrir.

Use seu e-mail corporativo, não um endereço pessoal.

O acompanhamento do progresso também exige a aceitação dos Termos de Serviço atuais nas Configurações de privacidade.

PT