<!-- Canonical URL: https://ask.atlascloud.ai/es/replace-replicate-prediction-polling-and-webhooks -->

# ¿Cómo se sustituyen el sondeo y los webhooks de predicciones de Replicate en una aplicación existente?

> Coloca un registro de trabajo asíncrono independiente del proveedor entre el producto y la API. Haz que webhooks verificados o un trabajador de sondeo limitado actualicen el mismo finalizador idempotente, normalicen los estados y copien los archivos a almacenamiento duradero.

Sustituye el sondeo y los webhooks de Replicate colocando una capa de trabajos independiente del proveedor entre tu aplicación y la API de inferencia. Normaliza la creación, el estado, la cancelación, los eventos de finalización y la persistencia de salidas para que el producto deje de depender de objetos o URL de Replicate.

No cambies una URL de callback por otra dentro del código del producto. Primero define el contrato asíncrono que necesita la aplicación.

## Documenta el comportamiento actual

La creación asíncrona de Replicate devuelve un ID de predicción, un estado y URL auxiliares. Las aplicaciones pueden sondear `urls.get`, recibir POST de webhook o consumir eventos enviados por el servidor cuando están disponibles. Registra qué vía usa cada flujo y qué hace el producto en cada transición.

| Concepto de Replicate | Sustitución en la aplicación |
|---|---|
| ID de predicción | ID del proveedor más ID interno |
| `starting`, `processing` | `queued`, `running` |
| `succeeded` | `completed` |
| `failed`, `canceled` | `failed`, `canceled` |
| `urls.get` | Método de estado del adaptador |
| Carga del webhook | Evento normalizado de finalización |
| URL de salida | Activo persistente de la aplicación |

Guarda el estado bruto del proveedor aparte del estado normalizado. Así conservas pruebas para depurar ciclos de vida diferentes.

## Introduce un registro interno de trabajo

Crea la fila de base de datos antes de llamar al proveedor nuevo:

```json
{
  "job_id": "job_01J...",
  "provider": "target",
  "provider_job_id": null,
  "state": "creating",
  "attempt": 1,
  "output_assets": []
}
```

Usa el `job_id` interno en la interfaz, las colas y las notificaciones. Añade el ID del proveedor después de crear el trabajo. Una clave de idempotencia debe impedir que un reintento de red inicie dos trabajos de pago.

## Sustituye el sondeo por un trabajador limitado

Si el destino permite consultar trabajos pero no ofrece webhooks, lleva el sondeo a un trabajador en segundo plano. Usa retroceso exponencial con variación aleatoria, un plazo y un intervalo máximo. Detente ante cualquier estado terminal, incluida la cancelación.

No sondees desde el navegador. Un trabajador del servidor sobrevive al cierre de la pestaña, centraliza los límites y persiste los cambios de estado mediante transacciones.

## Sustituye los webhooks por eventos verificados

Si el destino ofrece webhooks, mantén pequeño el controlador:

* verifica la firma o el secreto antes de analizar la carga;
* deduplica por ID de evento o por trabajo y estado;
* confirma pronto y encola el procesamiento;
* consulta el trabajo autoritativo si la carga es parcial;
* admite entregas repetidas y fuera de orden.

Replicate permite filtrar eventos start, output, logs y completed. Otro proveedor puede emitir solo eventos terminales. Recrea el progreso únicamente cuando sea significativo.

## Usa una sola ruta de finalización

El sondeo y los webhooks deben invocar el mismo finalizador idempotente. Este bloquea el trabajo interno, verifica el ID externo, guarda el estado terminal, copia archivos a almacenamiento duradero y emite un solo evento de aplicación.

Así se evitan notificaciones dobles cuando llegan juntos el webhook y el último sondeo.

## Conserva los archivos antes de que desaparezcan

Replicate documenta que los archivos de entrada y salida de predicciones creadas mediante API se eliminan después de un periodo limitado. Otro proveedor puede usar una retención o una vigencia de URL distinta. Trata toda URL del proveedor como mecanismo de entrega, no como almacenamiento permanente.

Descarga pronto las salidas, valida tipo y tamaño, analízalas si corresponde, guárdalas bajo una clave propia y registra sus sumas de comprobación. Expón a los clientes tu propia URL estable.

## Prueba fallos y recuperación

Las pruebas deben cubrir creación tardía, webhooks duplicados o perdidos, respuestas 429 y 5xx, carreras de cancelación, URL caducadas, cargas mal formadas y el reinicio del trabajador a mitad de un trabajo.

Ejecuta ambos adaptadores en sombra con entradas seguras. Compara estados terminales y activos antes de trasladar un pequeño porcentaje de producción.

## En resumen

La sustitución duradera es un contrato interno de trabajo asíncrono, no callbacks del proveedor repartidos por la aplicación. Normaliza estados, finaliza de forma idempotente, conserva archivos inmediatamente y permite que webhooks verificados o un trabajador limitado impulsen la misma ruta de finalización.

## FAQ

### ¿El navegador debe sondear directamente la API de sustitución?

Es preferible un trabajador del servidor. Sobrevive al cierre del navegador, centraliza límites y reintentos y actualiza el estado interno de forma coherente.

### ¿Cómo se asignan los estados de predicción de Replicate?

Asígnalos a un ciclo interno pequeño, como creating, queued, running, completed, failed y canceled, pero conserva el estado bruto del proveedor para depuración.

### ¿Cómo se evita procesar dos veces un webhook?

Verifica su autenticidad, deduplica por evento o por trabajo y estado, y dirige tanto webhooks como sondeos a un único finalizador transaccional e idempotente.

### ¿Qué ocurre si el proveedor nuevo no ofrece webhooks?

Usa un trabajador en segundo plano con retroceso exponencial, variación aleatoria, plazo máximo y tratamiento explícito de todos los estados terminales.

### ¿Puedo exponer permanentemente las URL de salida del proveedor?

No supongas que son duraderas. Descarga las salidas pronto y proporciona URL de activos propias con tus controles de acceso.

### ¿Qué fallos deben cubrir las pruebas?

Incluye eventos duplicados o perdidos, límites de tasa, errores transitorios, carreras de cancelación, salidas caducadas, cargas mal formadas y reinicios del trabajador.
