03 Diffuser les données en direct
Exécutez le collecteur résilient et vérifiez WebSocket, rapprochement REST et écritures Cloud.
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 psLe 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.toolChamps 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 collectorLes 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 collectorRelancez 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,degradedavec des timestamps REST récents oufixture; watched_marketsvaut 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.