Docs · Python

Logs y alertas en Python, en 5 minutos

Los errores de tu app de Python con su stack, el hilo de cada petición entre tus servicios y el aviso al teléfono cuando un pedido no termina. Un archivo, sin dependencias.

  1. 1

    Instala

    # copia estiaje.py a tu proyecto (Python 3.8 o superior)

    Es un archivo de unas 100 líneas, sin dependencias: cópialo de aquí.

  2. 2

    Tu llave

    Crea tu cuenta y pon la llave en ESTIAJE_TOKEN. O pídele a tu IA «conecta este repo a Estiaje» (el conector). Sin la llave no sale nada por la red: puedes instrumentar hoy.

  3. 3

    Tus errores y el hilo de cada petición

    ● Probado en CI
    # miapp/middleware.py  (y en settings.MIDDLEWARE: "miapp.middleware.hilo_estiaje")
    import estiaje
    
    estiaje.capturar_errores()   # los que nadie atrapó
    
    def hilo_estiaje(get_response):
        def middleware(request):
            estiaje.empezar_hilo(request.headers.get("traceparent"))
            return get_response(request)
        return middleware
    import estiaje
    
    estiaje.capturar_errores()   # los que nadie atrapó
    
    @app.before_request
    def hilo_estiaje():
        estiaje.empezar_hilo(request.headers.get("traceparent"))
    from fastapi import FastAPI, Request
    import estiaje
    
    estiaje.capturar_errores()   # los que nadie atrapó
    app = FastAPI()
    
    @app.middleware("http")
    async def hilo_estiaje(request: Request, call_next):
        estiaje.empezar_hilo(request.headers.get("traceparent"))
        return await call_next(request)
  4. 4

    El proceso que debe terminar

    estiaje.evento("pedido.pagado", {"order_id": pedido.id, "monto": pedido.total})
    # … cuando se surte …
    estiaje.evento("pedido.surtido", {"order_id": pedido.id}, kind="outcome")
  5. 5

    El aviso

    En el panel, en Procesos: «todo pedido.pagado espera su pedido.surtido, por order_id, en 30 minutos». Si no llega, te avisa al teléfono, por correo o en Slack, con el dinero en riesgo.

Y si quieres más
  • Los errores que atrapas: estiaje.error(e, {"order_id": pedido.id}), con su stack.
  • Al llamar a otro servicio, pasa el hilo: headers={"traceparent": estiaje.traceparent()}.
  • En FastAPI, manda el evento con BackgroundTasks para que salga después de responder.
  • En una lambda, estiaje.esperar() antes de terminar.

Todo lo demás está en la documentación completa.

Crear cuenta, 14 días de Pro Sin tarjeta. En pesos.