# Límites y límites de solicitudes Su plan define límites: llamadas por minuto, cuánto puede leer una consulta, tamaño de subida, claves de API activas y más. Léalos desde el código para acertar a la primera. ## Lea sus límites [#lea-sus-límites] ### En Python [#en-python] ```python title="limits.py" from klarety import Nexus with Nexus.connect() as nexus: limits = nexus.limits() print("Plan family:", limits.family) for knob in limits.knobs: value = knob.fixed if knob.fixed is not None else knob.default print(f"{knob.name}: {value} {knob.unit or ''} ({knob.description})") ``` `nexus.limits()` devuelve un objeto `Limits`: | Campo | Significado | | --- | --- | | `family` | La familia de su plan. | | `knobs` | Cada límite, como un `Knob`. | | `studio_sizes` | Cada tamaño de Studio que ofrece su plan, con `cores` y `memory_gb`. | Busque un límite por nombre con `limits.knob("api_key.max_active")`. Lanza `KeyError` cuando no existe ese límite. ### Qué contiene un knob [#qué-contiene-un-knob] | Campo | Significado | | --- | --- | | `name` | El nombre del límite. | | `description` | Qué limita, en palabras. | | `kind`, `unit` | Su tipo y su unidad. | | `fixed` | El valor, cuando su plan lo fija. | | `default`, `minimum`, `maximum` | El valor por defecto y el rango, cuando un proyecto puede elegir dentro de él. | | `choices` | Los valores permitidos, para un límite que es una elección. | | `settable_on_project` | Si un proyecto puede definir su propio valor. | ### Por HTTP [#por-http] ```bash curl -s https://api.klarety.ai/v1/limits -H "Authorization: Bearer $TOKEN" ``` ### En la app [#en-la-app] Abra para ver sus créditos, su gasto y los límites de su plan. `limits()` describe su plan. El servidor igual revisa cada solicitud, así que maneje los rechazos de todos modos. ## Límites fijos [#límites-fijos] Son iguales en todos los planes: | Límite | Valor | | --- | --- | | Cuerpo de la solicitud | 1 MiB. Los datos más grandes van por una subida, no en la solicitud. | | Enlace de subida | Dura una hora. | | `max_rows` en una sentencia SQL | De 1 a 10.000, y nunca más que la página de filas de su plan. | | Parámetros SQL | Hasta 256 por sentencia. | | Filas cambiadas por un `edit_rows()` | Hasta 500. | | Sentencias en un trabajo por lotes | De 1 a 50. | | Aristas enviadas en un `assert_edges()` | Hasta 1.000. | ## Cuando llega a un límite [#cuando-llega-a-un-límite] | Qué pasa | Estado | Excepción del SDK | Qué hacer | | --- | --- | --- | --- | | Demasiadas llamadas por minuto | `429` con `Retry-After` | `RateLimitedError` | El SDK espera y reintenta. Haga su ciclo más lento. | | Todos los espacios de sentencias ocupados | `429` | `OverBudgetError` | El SDK espera y reintenta. Envíela más tarde. | | Una consulta leería demasiado | `413` | `OverBudgetError` | Acótela; verifique con `nexus.estimate()`. | | Cuerpo de más de 1 MiB | `413` | `OverBudgetError` | Envíe menos, o suba un archivo. | | Sin créditos | `402` | `InsufficientCreditsError` | Agregue créditos. | | Otro límite del plan | `403` o `422` | `RefusedError` | El campo `limit` del error lo nombra. | El límite que rechaza se nombra en el campo `limit` del error, para que pueda pedir aumentarlo. Vea [Errores](/docs/es/developers/errors). ## Próximos pasos [#próximos-pasos] - [Errores](/docs/es/developers/errors) para el formato completo de errores. - [Ejecutar SQL](/docs/es/developers/sql) para estimar una consulta antes de ejecutarla. - [Autenticación](/docs/es/developers/authentication) para administrar las claves activas.