Verificación y problemas habituales - Python
Un evento controlado
import asyncio
from dock_ray import DockRayClient
async def main():
client = DockRayClient(token="...", private_key="...")
await client.capture_message("Mensaje de control DockRay")
await client.close()
asyncio.run(main())
La llamada es una corrutina: sin await o sin un bucle de eventos en marcha, no se envía nada. Un intérprete con los avisos de corrutinas no esperadas activados lo señala de inmediato como un RuntimeWarning.
Problemas habituales
client.enabled es False aunque las variables estén definidas
Comprueba que el token y la clave privada llegaron al constructor como cadenas no vacías. DockRayClient() sin argumentos es una configuración válida, deliberadamente inactiva, así que una errata en el nombre de una variable de entorno o un os.environ.get(...) olvidado producen exactamente el mismo efecto silencioso. El cliente nunca lee una variable del servidor por sí mismo: a diferencia de las integraciones de PHP, aquí siempre es el código que llama quien aporta las credenciales.
Un evento programado con send_later() nunca llegó
send_later() guarda una referencia a la tarea hasta que termina, pero el propio proceso tiene que seguir vivo hasta entonces. En un script corto que termina justo después de programar el envío, la tarea puede cortarse a mitad de camino. Cierra la aplicación mediante await client.close(): espera a cada envío programado antes de devolver el control.
HTTPException aparece en el panel como transacción, no como error
Eso es intencionado, no un fallo. FastAPI gestiona HTTPException antes de que llegue al middleware de DockRay, así que una petición que termina en 404 o 422 es simplemente una transacción con ese código de estado. Si quieres ver esas respuestas como errores, captúralas con tu propio manejador de excepciones colocado antes del middleware y repórtalas a mano con capture_exception().
Faltan Authorization, Cookie y X-Api-Key en las cabeceras de la petición
El middleware las elimina siempre de los datos reportados, sin importar la configuración: no es algo que se pueda volver a activar. Si necesitas su contenido para diagnosticar algo, revísalo localmente, fuera del panel.
No aparece ninguna transacción
Comprueba si el middleware realmente está añadido (app.add_middleware(DockRayFastAPIMiddleware, ...)) y si la ruta que estás probando está precisamente en la lista exclude_paths. Por defecto omite /health y /metrics.
Una excepción reportada a mano no llegó
Comprueba que la llamada a capture_exception() vaya realmente precedida de await o se pase a send_later(): una corrutina que nadie ejecutó no hace nada, y Python no siempre lo avisa a gritos.
El panel responde 200 pero no aparece el evento
Una respuesta 200 {"success": false} significa que la cuenta ha agotado su cupo mensual de errores. La integración no lo trata como una avería, y hace bien. El cupo se ve en el panel de la cuenta; hasta fin de mes se calcula a partir del consumo registrado, así que borrar errores no lo reinicia.
Sigue sin funcionar
Repasa la lista de comprobación de falta de datos y, si no ayuda, escríbenos. Indica el nombre del proyecto, la versión de la integración y la hora aproximada de la prueba: acorta el camino a la respuesta.