Recupere uma requisição que excedeu o tempo limite sem pagar por outra tarefa
Um timeout de conexão não significa que a criação da tarefa falhou. O solvethree pode ter criado a tarefa antes de a resposta se perder. Recupere-a enviando os mesmos dados de entrada da tarefa com o mesmo requestId, em vez de enviar uma nova tarefa lógica.
Nesta página
Salve a requisição e reenvie-a sem alterações
Um requestId identifica uma única tarefa lógica entre as tentativas de criação. Ele aceita de 1–64 letras ASCII, números, sublinhados ou hífens. Escolha-o antes de enviar a requisição e mantenha-o junto dos dados de entrada originais da tarefa.
- 1.
Salve o corpo da tarefa
Coloque a requisição completa, incluindo
requestId, emrequest.json. Para reCAPTCHA Enterprise, incluasitecomo um nome de host,actione exatamente um dos camposproxyouproxyCandidates. Não adicionetypenemurl. Mantenha o arquivo privado, pois ele contém credenciais de proxy. - 2.
Envie o arquivo salvo
Execute o comando abaixo com a chave de API do seu espaço de trabalho. Mantenha a chave no servidor.
- 3.
Se a conexão atingir o tempo limite, repita o comando
Use o mesmo comando e o arquivo
request.jsonsem alterações. Não gere outro requestId nem edite os dados de entrada da tarefa só porque a resposta não chegou.
# 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 uma nova tarefa foi criada. HTTP 200 significa que a requisição idêntica recuperou a tarefa existente. Leia o ID e o status da tarefa retornados em ambos os casos; nenhum desses status HTTP, por si só, significa que uma solução está pronta.
Como exemplo concreto de alteração dos dados de entrada, suponha que a requisição salva tenha action definido como login. Alterá-lo para checkout mantendo o mesmo requestId retorna HTTP 409, um conflito de ID de requisição. Para recuperar a tarefa original, restaure o arquivo original e reenvie-o. Se você realmente precisar dos dados alterados, atribua um novo requestId a essa nova tarefa lógica.
Trate as respostas HTTP sem sucesso antes de ler um payload de sucesso da tarefa. Um 409 é um erro de requisição HTTP, não uma falha terminal da tarefa original.
Recupere os IDs de um erro do SDK
Ambos os SDKs oficiais geram um requestId quando você o omite, mas nenhum deles repete automaticamente a criação da tarefa. Se uma chamada do SDK lançar uma exceção, verifique seus campos de recuperação antes de iniciar outra tarefa.
- JavaScript:
SolvethreeErrorexpõerequestIdetaskId. - Python:
SolvethreeErrorexpõerequest_idetask_id.
Se o erro contiver um ID de tarefa, retome as consultas GET periódicas dessa tarefa; não é necessário repetir a criação. Se contiver apenas um ID de requisição, reenvie a criação com esse ID e os dados de entrada originais e, em seguida, use o ID de tarefa retornado. Preservar os dados de entrada originais é importante mesmo quando o SDK gerou o ID.
Não trate toda exceção como uma criação interrompida. TaskFailedError representa uma tarefa que já atingiu o estado terminal de falha, não uma requisição que precisa de recuperação.
Continue com a tarefa recuperada
Consulte a tarefa recuperada com GET /v1/tasks/:id. Continue consultando periodicamente enquanto o status for pending ou solving. Somente ready contém uma solução utilizável.
Se o status for failed, pare de consultar e verifique errorCode e error. Resoluções que falham são reembolsadas. Isso é diferente de um site rejeitar uma solução gerada: ready significa que a solução está disponível, não que o destino a aceitou.
Resultados concluídos podem retornar HTTP 410 após o prazo de retenção expirar, portanto a recuperação não é um armazenamento permanente de resultados. Para o próprio loop de consultas, consulte consultas periódicas de tarefas e tempos limite.
Fontes e referência da API
Ainda precisa de ajuda?
Envie ao suporte o ID da tarefa e o erro que você recebeu.