Saltar para o conteúdo
Last updated

Operações assíncronas

Algumas operações do MoreLogin aceitam o trabalho antes de o navegador, Cloud Phone, arquivo, aplicativo ou execução de RPA subjacente atingir o estado final. Uma resposta de envio bem-sucedida significa que a requisição foi aceita; não significa sempre que o estado solicitado já foi alcançado.

Modelo de estados do cliente

EstadoSignificadoAção do cliente
EnviadoA API aceitou o comando ou criou uma tarefaGuarde os IDs retornados e o requestId; não reenvie a mesma escrita imediatamente
Pendente ou em execuçãoA operação posterior ainda está em andamentoConsulte o endpoint documentado de status/resultado com intervalos crescentes
Bem-sucedidoO recurso ou a tarefa alcançou seu estado terminal de êxitoPare de consultar e continue o fluxo
FalhouO endpoint de status/resultado informa falha ou um erro de negócio terminalPare as novas tentativas automáticas; guarde os IDs, os detalhes da falha e o requestId
Resultado desconhecidoA escrita expirou ou a conexão fechou sem uma resposta utilizávelConsulte o estado atual do recurso ou da tarefa antes de decidir repetir

Regras de polling

  • Comece por cerca de 1 segundo e aumente o intervalo para 2, 4 e 8 segundos, com limite de 15–30 segundos.
  • Aplique jitter para que clientes concorrentes não consultem no mesmo instante.
  • Pare em um estado terminal documentado; não faça polling indefinidamente.
  • Interprete data: null como pendente apenas quando o endpoint documentar esse comportamento explicitamente.
  • Um tempo limite de transporte em uma escrita não é prova de falha.

Fluxos documentados

FluxoOperação de envioOperação de observaçãoEstado terminal
Início/parada do cloud browserPOST /cloudbrowser/start ou /cloudbrowser/stopPOST /cloudbrowser/pageO runtime alcança o estado pretendido ou desaparece após a parada
Ligar/desligar Cloud PhonePOST /cloudphone/powerOn ou /cloudphone/powerOffPOST /cloudphone/pageenvStatus=4 ligado ou envStatus=2 desligado; 1 é falha de criação
Upload de arquivo no Cloud PhoneEnvie para a URL assinada e depois POST /cloudphone/uploadFilePOST /cloudphone/uploadFileResultstatus=1 êxito ou status=2 falha; data: null e status=0 são pendentes
Download do Cloud PhonePOST /cloudphone/downloadPOST /cloudphone/download/resultstatus=20 êxito, 30 falha ou 40 cancelado; 10 é em execução
Instalação de aplicativoPOST /cloudphone/app/installPOST /cloudphone/app/installedListO pacote solicitado aparece na lista de aplicativos instalados
Agendamento/execução de RPAPOST /cloudphone/rpa/task/save ou /onceTask/savePOST /cloudphone/rpa/task/page, /subTask/page e /subTask/detail/{id}taskState=2 concluído ou 3 cancelado; verifique handleResult (0 falha, 1 êxito)
Transmissão ao vivoPOST /cloudphone/live/start ou /live/endPOST /cloudphone/live/statusO status confirma que a transmissão começou ou parou
Upload para cloud storagePOST /cloudstorage/upload/init, seguido do PUT no object storePOST /cloudstorage/upload/complete depois que cada PUT necessário tiver êxitoA resposta de conclusão tem êxito; nunca chame complete antes de o upload do objeto ter êxito

Os equivalentes da Local API usam o prefixo /api onde documentado. Veja a Matriz de novas tentativas e conclusão de endpoints para orientação operação por operação.

Exemplo de recuperação após tempo limite

try:
    submit_operation()
except TimeoutError:
    # The write may already have succeeded.
    current = query_current_state()
    if current.is_terminal_success:
        pass
    elif current.is_pending:
        poll_until_terminal()
    else:
        decide_whether_retry_is_safe(current)

A API pública não define atualmente um cabeçalho geral de chave de idempotência. Por isso IDs de recurso, IDs de tarefa, consultas de estado e o requestId são essenciais para uma recuperação segura.