Skip to main content
Paquete PyPI: olostep | Requisitos: Python 3.11+

Instalación

Autenticación

Obtén tu clave API desde el Panel de Olostep.

Inicio Rápido

El SDK ofrece dos opciones de cliente dependiendo de tu caso de uso:

Cliente Sincrónico (`Olostep`)

Mejor para: Scripts y casos de uso simples donde prefieres operaciones bloqueantes.

El cliente sincrónico proporciona una interfaz más sencilla y bloqueante que es más fácil de comenzar si eres nuevo en async/await.

Cliente Asincrónico (`AsyncOlostep`)

Mejor para: Aplicaciones de producción y manejo de muchas solicitudes concurrentes.

El cliente asincrónico proporciona operaciones no bloqueantes y es la opción recomendada para aplicaciones de producción que necesitan un alto rendimiento.

Cliente Sincrónico (Olostep)

El cliente sincrónico (Olostep) proporciona una interfaz bloqueante que es perfecta para scripts y casos de uso simples.

Raspado Web Básico

Procesamiento por Lotes

Rastreo Web Inteligente

Mapeo de Sitios

Respuestas Potenciadas por IA

Cliente Asincrónico (AsyncOlostep)

El cliente asincrónico (AsyncOlostep) es el cliente recomendado para aplicaciones de alto rendimiento, servicios backend, y cuando necesitas manejar muchas solicitudes concurrentes.

Raspado Web Básico

Procesamiento por Lotes

Rastreo Web Inteligente

Mapeo de Sitios

Respuestas Potenciadas por IA

Referencia del SDK

Estructura de Métodos

Ambos clientes del SDK proporcionan la misma interfaz limpia y pythonica organizada en espacios de nombres lógicos: Cada operación devuelve objetos con estado con métodos ergonómicos para operaciones de seguimiento.

Manejo de Errores

Captura todos los errores del SDK usando la clase de excepción base:
Para información detallada sobre manejo de errores, incluyendo la jerarquía completa de excepciones y opciones de manejo de errores granular, consulta Manejo de Errores Detallado.

Reintentos Automáticos

El SDK reintenta automáticamente en errores transitorios (problemas de red, problemas temporales del servidor) basándose en la configuración de RetryStrategy. Puedes personalizar el comportamiento de reintento pasando una instancia de RetryStrategy al crear el cliente:
Para opciones detalladas de configuración de reintentos y mejores prácticas, consulta Estrategia de Reintentos.

Funciones Avanzadas

Coerción Inteligente de Entradas

El SDK maneja inteligentemente varios formatos de entrada para máxima conveniencia:

Opciones Avanzadas de Raspado

Caché

Por defecto, cada solicitud de raspado obtiene la página fresca (max_age=0). Pasa max_age para reutilizar un resultado reciente con los mismos parámetros y mejorar el tiempo de respuesta. El valor está en segundos; el máximo es 7 días (604800). Consulta Caché para más detalles.

Procesamiento por Lotes con IDs Personalizados

Rastreo Inteligente

Mapeo de Sitios con Filtros

Recuperación de Respuestas

Recuperación de Contenido

Registro

Habilita el registro para depurar problemas:
Niveles de Registro: INFO (recomendado), DEBUG (detallado), WARNING, ERROR

Configuración de Estrategia de Reintentos

La clase RetryStrategy controla cómo el SDK de Olostep maneja errores transitorios de la API a través de reintentos automáticos con retroceso exponencial y jitter. Esto ayuda a asegurar una operación confiable en entornos de producción donde problemas temporales de red, límites de tasa y sobrecarga del servidor pueden causar fallos intermitentes.

Comportamiento Predeterminado

Por defecto, el SDK utiliza la siguiente configuración de reintentos:
  • Máximo de reintentos: 5 intentos
  • Retraso inicial: 2 segundos
  • Retroceso: Exponencial (2^intento)
  • Jitter: 10-90% del retraso (aleatorizado)
Esto significa:
  • Intento 1: Inmediato
  • Intento 2: ~2-3.6s de retraso
  • Intento 3: ~4-7.2s de retraso
  • Intento 4: ~8-14.4s de retraso
  • Intento 5: ~16-28.8s de retraso
Duración máxima: ~57 segundos para todos los reintentos (peor caso)

Configuración Personalizada

Cuándo Ocurren los Reintentos

El SDK reintenta automáticamente en:
  • Problemas temporales del servidor (OlostepServerError_TemporaryIssue)
  • Respuestas de tiempo de espera (OlostepServerError_NoResultInResponse)
Otros errores (autenticación, validación, recurso no encontrado, etc.) fallan inmediatamente sin reintento.

Reintentos de Transporte vs Llamador

El SDK tiene dos capas de reintentos:
  1. Capa de Transporte: Maneja fallos de conexión a nivel de red (DNS, tiempos de espera, etc.)
  2. Capa de Llamador: Maneja errores transitorios a nivel de API (controlado por RetryStrategy)
Ambas capas son independientes y tienen configuración separada. La duración máxima total es la suma de ambas capas.

Calculando la Duración Máxima

Ejemplos de Configuración

Aquí hay algunos ejemplos de cómo configurar la estrategia de reintentos para diferentes casos de uso.

Estrategia Conservadora

Estrategia Agresiva

Sin Reintentos (Fallo Rápido)

Estrategia de Alto Rendimiento

Entendiendo el Jitter

El jitter añade aleatorización para prevenir problemas de “manada atronadora” cuando muchos clientes reintentan simultáneamente. El jitter se calcula como:
Por ejemplo, con initial_delay=2.0, jitter_min=0.1, jitter_max=0.9:
  • Intento 0: base=2.0s, jitter=0.2-1.8s, final=2.2-3.8s
  • Intento 1: base=4.0s, jitter=0.4-3.6s, final=4.4-7.6s
  • Intento 2: base=8.0s, jitter=0.8-7.2s, final=8.8-15.2s

Mejores Prácticas

Para Aplicaciones de Producción

Para Desarrollo/Pruebas

Para Operaciones por Lotes

Monitoreo y Depuración

El SDK registra información de reintentos al nivel DEBUG:
Habilita el registro de depuración para monitorear el comportamiento de reintentos:

Manejo de Errores

Cuando se agotan todos los reintentos, se lanza el error original:

Consideraciones de Rendimiento

  • Memoria: Cada intento de reintento utiliza memoria adicional para objetos de solicitud/respuesta
  • Tiempo: El tiempo total de operación puede ser significativamente más largo con reintentos habilitados
  • Límites de API: Los reintentos cuentan contra tus límites de uso de API
  • Red: Más tráfico de red debido a intentos de reintento
Elige tu estrategia de reintentos basada en los requisitos de tu aplicación para confiabilidad vs. rendimiento.

Manejo de Errores Detallado

Jerarquía de Excepciones

El SDK de Olostep proporciona una jerarquía de excepciones comprensiva para diferentes escenarios de fallo. Todas las excepciones heredan de Olostep_BaseError. Hay tres tipos principales de errores que heredan directamente de Olostep_BaseError:
  1. Olostep_APIConnectionError - Fallos de conexión a nivel de red
  2. OlostepServerError_BaseError - Errores levantados (más o menos) por el servidor de la API
  3. OlostepClientError_BaseError - Errores levantados por el SDK del cliente

Por Qué los Errores de Conexión Son Separados

Olostep_APIConnectionError es separado de los errores del servidor porque representa fallos a nivel de red que ocurren antes de que la API pueda procesar la solicitud. Estos son problemas de capa de transporte (fallos de DNS o HTTP, tiempos de espera, conexión rechazada, etc.) en lugar de errores a nivel de API. Los códigos de estado HTTP (4xx, 5xx) se consideran respuestas de API y se categorizan como errores del servidor, incluso si indican problemas.

Manejo de Errores Recomendado

Para la mayoría de los casos de uso, captura el error base e imprime el nombre del error:
Este enfoque captura todos los errores del SDK y proporciona información clara sobre lo que salió mal. El nombre del error (por ejemplo, OlostepServerError_AuthFailed) es lo suficientemente descriptivo para entender el problema.

Manejo de Errores Granular

Si necesitas un manejo de errores más específico, captura los tipos de errores específicos directamente. Evita usar OlostepServerError_BaseError o OlostepClientError_BaseError - estas clases base solo indican quién levantó el error (servidor vs cliente), no quién es responsable de solucionarlo. Esto es un detalle de implementación que no ayuda con la lógica de manejo de errores. En su lugar, captura tipos de errores específicos que indican el problema real:

Configuración

Variables de Entorno

Obtener Ayuda

Recursos

Paquete PyPI

Ver en PyPI

Obtener Clave API

Regístrate gratis