Recupera una solicitud cuyo tiempo de espera se ha agotado sin pagar por otra tarea

Por solvethree4 min de lectura

Un tiempo de espera de conexión agotado no significa que la creación de la tarea haya fallado. Es posible que solvethree haya creado la tarea antes de que se perdiera la respuesta. Recupérala enviando los mismos datos de entrada de la tarea con el mismo requestId, en lugar de enviar una nueva tarea lógica.

En esta página

Guarda la solicitud y vuelve a enviarla sin cambios

Un requestId identifica una tarea lógica entre distintos intentos de creación. Admite entre 1–64 letras ASCII, números, guiones bajos o guiones. Elígelo antes de enviar la solicitud y consérvalo junto con los datos de entrada originales de la tarea.

  1. 1.

    Guarda el cuerpo de la tarea

    Guarda la solicitud completa, incluido requestId, en request.json. Para reCAPTCHA Enterprise, incluye site como nombre de host, action y exactamente uno de los campos proxy o proxyCandidates. No añadas type ni url. Mantén el archivo privado porque contiene credenciales del proxy.

  2. 2.

    Envía el archivo guardado

    Ejecuta el siguiente comando con la clave de API de tu espacio de trabajo. Mantén la clave en el servidor.

  3. 3.

    Si se agota el tiempo de espera de la conexión, repite el comando

    Usa exactamente el mismo comando y el archivo request.json sin cambios. No generes otro requestId ni edites los datos de entrada de la tarea solo porque no haya llegado la respuesta.

cURL · volver a enviar el mismo archivo de solicitud
# request.json contains one valid task body and a saved requestId.
# Keep the file private: it contains your proxy credentials.
curl --fail-with-body --max-time 30 \
  'https://api.solvethree.com/v1/tasks?waitMs=0' \
  -H "Authorization: Bearer $SOLVETHREE_API_KEY" \
  -H 'Content-Type: application/json' --data-binary @request.json

# If the connection broke, run the identical command with the identical file.
# New task: HTTP 201. Same requestId + same inputs: HTTP 200, existing task.
# Same requestId + changed inputs: HTTP 409.

HTTP 201 significa que se ha creado una nueva tarea. HTTP 200 significa que la solicitud idéntica ha recuperado la tarea existente. Lee el ID y el estado de la tarea devueltos en ambos casos; ninguno de estos estados HTTP por sí solo significa que la solución esté lista.

Como ejemplo concreto de cambio en los datos de entrada, supongamos que la solicitud guardada tiene action establecido en login. Cambiarlo a checkout manteniendo el mismo requestId devuelve HTTP 409, un conflicto de ID de solicitud. Para recuperar la tarea original, restaura el archivo original y vuelve a enviarlo. Si necesitas usar intencionadamente los datos modificados, asigna un nuevo requestId a esa nueva tarea lógica.

Gestiona las respuestas HTTP no satisfactorias antes de leer el contenido de una respuesta de tarea satisfactoria. Un 409 es un error de solicitud HTTP, no un fallo terminal de la tarea original.

Recupera los ID de un error del SDK

Ambos SDK oficiales generan un requestId si lo omites, pero ninguno reintenta automáticamente la creación de tareas. Si una llamada al SDK lanza una excepción, inspecciona sus campos de recuperación antes de iniciar otra tarea.

  • JavaScript: SolvethreeError expone requestId y taskId.
  • Python: SolvethreeError expone request_id y task_id.

Si el error contiene un ID de tarea, reanuda las consultas GET periódicas de esa tarea; no es necesario repetir la creación. Si solo contiene un ID de solicitud, vuelve a enviar la solicitud de creación con ese ID y los datos de entrada originales y, después, usa el ID de tarea devuelto. Conservar los datos de entrada originales es importante incluso cuando el SDK ha generado el ID.

No trates todas las excepciones como una creación interrumpida. TaskFailedError representa una tarea que ya ha alcanzado un estado terminal de fallo, no una solicitud que necesita recuperarse.

Continúa con la tarea recuperada

Obtén la tarea recuperada con GET /v1/tasks/:id. Sigue consultándola periódicamente mientras su estado sea pending o solving. Solo ready contiene una solución utilizable.

Si el estado es failed, deja de consultar e inspecciona errorCode y error. Las resoluciones fallidas se reembolsan. Esto es distinto de que un sitio web rechace una solución generada: ready significa que la solución está disponible, no que el sitio de destino la haya aceptado.

Los resultados completados pueden devolver HTTP 410 cuando expire su periodo de conservación, por lo que la recuperación no equivale a almacenar resultados de forma permanente. Para el propio bucle de consultas, consulta consultas periódicas de tareas y tiempos de espera.

¿Sigues teniendo problemas?

Envía al equipo de soporte el ID de tu tarea y el error que recibiste.

Contactar con soporte
Recupera una solicitud cuyo tiempo de espera se ha agotado sin pagar por otra tarea · solvethree