Notas de quickstart
Sondea varios deportes en un solo script de Python
Una sesión, un cursor por deporte, y un ritmo compartido. Una pequeña extensión del bucle del quickstart que cubre varios tableros sin sorpresas.
El bucle del quickstart sondea un deporte. Cubrir varios deportes es un bucle sobre una lista de IDs de deporte, con un cursor por deporte y un ritmo que respeta la cuota compartida. Es un cambio pequeño, y un error de presupuesto se esconde dentro.
Un cursor por deporte, una sesión para todos
El cursor since sigue una posición en los cambios de un tablero, así que cada deporte guarda el suyo. Un diccionario indexado por ID de deporte basta: lee el cursor del tablero que vas a sondear, envíalo, guarda el nuevo. La sesión HTTP, con la clave en su cabecera, se comparte entre todos, exactamente como la construye el quickstart de Python, verificado el 2026-10-12.
SPORTS = [1, 2, 4] # soccer, tennis, hockey
cursors = {}
while True:
for sport_id in SPORTS:
params = {"sport_id": sport_id}
since = cursors.get(sport_id)
if since is not None:
params["since"] = since
r = s.get(URL, params=params, timeout=10)
if r.status_code == 429:
time.sleep(int(r.headers.get("Retry-After", "5")))
continue
r.raise_for_status()
data = r.json()
cursors[sport_id] = data["last"]
for ev in data["events"]:
print(sport_id, ev["home"], "v", ev["away"])
time.sleep(60)
Una pasada round-robin por minuto cubre cada tablero una vez por minuto, y los cursores mantienen los deltas de cada deporte separados.
El error de presupuesto: multiplicar sin notar
La clave gratuita permite 100 llamadas al día, según la página de precios, verificado el 2026-10-12. Un deporte cada 15 minutos cabe todo el día con 96 llamadas. Tres deportes a ese ritmo necesitan 288, y el script muere a media tarde. El presupuesto es por clave, no por deporte, así que el intervalo tiene que estirarse con el recuento de deportes: tres deportes en la clave gratuita significa una ronda cada 45 minutos, no tres tableros cada 15.
En un plan de pago la misma aritmética cambia a por segundo: una ronda de tres tableros cada segundo son 3 solicitudes por segundo, bien dentro de los niveles REST, y el intervalo deja de ser una cuestión de presupuesto y se vuelve de frescura.
Cuándo un script deja de bastar
Un bucle basta mientras los tableros comparten un ritmo. Cuando un deporte necesita un intervalo más rápido que el resto, o un fallo en uno no debe atascar a los otros, divide los deportes entre procesos. Una sola línea por ronda, con el recuento de deportes y el número de eventos cambiados, mantiene el bucle observable sin un panel: cuando la línea deja de aparecer, el script paró, y esa es la monitorización que importa a este tamaño. Hasta entonces, el bucle único con cursores por deporte es lo más simple que cubre tu lista.
Una sesión, un cursor por deporte, un intervalo honesto. El sondeo multideporte es un diccionario y un bucle, más la aritmética para mantener el presupuesto intacto.