PolymarketClickHouse Workshops

03 Diffuser les données en direct

Exécutez le collecteur résilient et vérifiez WebSocket, rapprochement REST et écritures Cloud.

Votre ordinateur
Terminal macOS : Exécutez les commandes de l’atelier dans le Terminal avec zsh ou bash.

Point de départ

Les six objets polymarket existent et .env.polymarket est chargé.

Ce qui démarre

Un seul conteneur Python sans état :

  • découvre cinq marchés actifs par Gamma ;
  • s'abonne aux deux tokens de résultat sur le WebSocket CLOB public ;
  • rapproche les transactions publiques toutes les 10 secondes ;
  • interroge les carnets CLOB lorsque le WebSocket est bloqué ; et
  • écrit des insertions asynchrones acquittées dans ClickHouse Cloud.

Aucune base locale, aucun broker, serveur de tableau de bord ou identifiant Polymarket.

Étape 1 — Construire et démarrer le collecteur

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

Le statut devient healthy après la découverte et la première écriture Cloud réussie. Un statut d'application degraded reste sain pour Docker si REST est récent et le WebSocket se reconnecte.

Étape 2 — Lire le contrat de santé

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

Champs attendus :

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

status: degraded avec reason: websocket_stale_rest_active est acceptable si last_trade_reconcile_at et last_book_fallback_at continuent d'avancer. unhealthy ne l'est pas ; utilisez le Dépannage.

Étape 3 — Observer les événements source et les écritures

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

Les logs sont en JSON. Cherchez collector_ready. Les erreurs source ou ClickHouse comprennent un aperçu borné et le délai de nouvelle tentative ; aucun mot de passe n'est enregistré.

Étape 4 — Prouver la présence des lignes dans 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 et one_minute_states doivent dépasser zéro avant le Module 04. trades augmente normalement en moins d'une minute ; un marché calme peut le retarder.

Étape 5 — Utiliser le mode fixture déterministe uniquement si nécessaire

Si le réseau bloque Polymarket ou si aucun marché sélectionné ne bouge après 60 secondes :

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

Relancez les contrôles. Statut attendu : fixture ; les nombres de ticks et transactions augmentent toutes les cinq secondes. Gardez la sauvegarde jusqu'à la fin du module.

Terminé lorsque

  • la santé vaut live, degraded avec des timestamps REST récents ou fixture ;
  • watched_markets vaut 5 ; et
  • les quatre comptages Cloud répondent, avec des lignes de cotations et de minutes supérieures à zéro.

Suite : interroger l'agrégat incrémental.

Sur cette page

Suivre votre progression ?

Facultatif. Nous envoyons un lien par e-mail pour confirmer votre adresse ; la progression est enregistrée après son ouverture.

Utilisez votre adresse e-mail professionnelle, et non une adresse personnelle.

Le suivi de la progression exige aussi d’accepter les Conditions d’utilisation actuelles dans les Paramètres de confidentialité.

FR