BookinglyTech News
Software

Python y FastAPI: cómo exponer resultados de fútbol en tiempo real

Un ejemplo práctico muestra cómo obtener puntuaciones en vivo de un API de fútbol y exponerlas a través de un endpoint FastAPI, con cacheo y manejo de claves.

1 min de lecturaDev.to1 vista

En la práctica, muchos desarrolladores backend necesitan consumir datos deportivos sin exponer claves a los clientes. Este tutorial explica cómo obtener resultados en vivo de fútbol con la API de Orbistats y exponerlos mediante un pequeño servidor FastAPI.

Configuración inicial

  1. Regístrate para obtener una clave gratuita sin tarjeta en [orbistats.com/signup.html].
  2. Instala las dependencias:
pip install requests fastapi uvicorn python-dotenv
  1. Guarda la clave en un archivo .env:
ORBISTATS_API_KEY=tu_clave_aquí
  1. Crea un cliente sencillo con requests:
import os
import requests
from dotenv import load_dotenv

load_dotenv()
API_KEY = os.getenv("ORBISTATS_API_KEY")
BASE_URL = "https://api.orbistats.com/v1"

def get_live_football_scores():
    response = requests.get(f"{BASE_URL}/football/live", headers={"Authorization": f"Bearer {API_KEY}"})
    response.raise_for_status()
    return response.json()

Exponiendo a FastAPI

from fastapi import FastAPI
app = FastAPI()

@app.get("/scores/live")
def live_scores():
    return get_live_football_scores()

Ejecuta con:

uvicorn main:app --reload

Ahora tu endpoint /scores/live devuelve los resultados sin exponer la clave.

Cacheo para respetar el límite

Para evitar superar el límite gratuito, se puede usar un caché en memoria con TTL:

from cachetools import TTLCache
cache = TTLCache(maxsize=1, ttl=15)

@app.get("/scores/live")
def live_scores():
    if "matches" not in cache:
        cache["matches"] = get_live_football_scores()
    return cache["matches"]

Esto mantiene una copia válida por 15 segundos.

Alternativas: polling vs WebSockets

Si necesitas actualizaciones en tiempo real sin polling, considera la API WebSocket de Orbistats (documentación en [orbistats.com/developers/sandbox.html]).

Extensiones

El mismo patrón sirve para fixtures, resultados históricos o cuotas. Sólo cambia la ruta y la estructura de respuesta. La referencia completa de endpoints está en la documentación de Orbistats.

Conclusión

El ejemplo muestra un flujo típico: autenticación segura, caché, y un endpoint ligero. Es útil para bots de Discord, alertas de Telegram o dashboards internos. La pregunta pendiente es qué estrategia de caché prefieren los demás cuando los datos cambian cada pocos segundos.