Por que o Runner fica travado em "Executing task..." e como resolver ?

Por que o Runner fica travado em "Executing task..." e como resolver ?

Visão Geral

Em algumas situações esporádicas, o BotCity Runner pode parecer travado após buscar uma nova tarefa da fila. Nesses casos, o status fica parado em:

WarningExecuting task...

e a automação não é iniciada, sendo necessário reiniciar manualmente o Runner para que ele volte a funcionar corretamente.


Causa Provável

Esse problema geralmente está relacionado ao uso de recursos que não foram finalizados corretamente na execução anterior. Quando o código tenta reutilizar esses mesmos recursos, o sistema operacional identifica um conflito, pois entende que eles ainda estão "em uso".


Exemplo Comum: WebDriver

Um caso muito comum ocorre com o uso do WebDriver em automações Web:

  • Se o WebDriver não for encerrado corretamente, ele pode continuar sendo executado em segundo plano.

  • Isso impede a criação de novas instâncias na próxima execução, causando o travamento do Runner.


Solução Recomendável

Garanta o encerramento correto dos recursos

Implemente boas práticas no seu código para garantir que todos os recursos utilizados pela automação sejam encerrados corretamente, mesmo em casos de exceção.

Exemplo em Python:


  1. from selenium import webdriver
  2. driver = webdriver.Chrome()
  3. driver = webdriver.Chrome()
  4. try:
  5. # lógica da automação
  6. pass
  7. finally: driver.quit()
  8. driver.quit() # garante que o WebDriver será encerrado

Usar blocos try...finally ajuda a manter o ambiente limpo entre as execuções.


Finalizando a tarefa e reportando dados ao BotCity Maestro

Depois que uma tarefa é coletada para execução, ela passa para o status Running. É responsabilidade do desenvolvedor informar ao BotCity Maestro o status final da tarefa utilizando o SDK do Maestro.

Essa etapa permite:

  • Melhor controle sobre as execuções

  • Visualização clara dos resultados no portal Maestro

  • Geração de métricas no módulo BotCity Insights


  Status possíveis de finalização da tarefa

  • SUCCESS: Tarefa concluída com sucesso.

  • FAILED: A tarefa não foi concluída.

  • PARTIALLY_COMPLETED: Apenas parte das etapas foram concluídas.

Exemplo: finalizando a tarefa e reportando métricas


  1. maestro.finish_task(
  2. task_id=task.id, status=
  3. status=AutomationTaskFinishStatus.SUCCESS, message=
  4. message="Tarefa foi concluída com sucesso.", total_items=
  5. total_items=100, # Total de itens processados
  6. processed_items=90, # Itens processados com sucesso
  7. failed_items=10 # Itens processados com falha
  8. )

Notes
 Um "item" pode representar qualquer entidade no seu processo (ex: registros, arquivos, requisições etc.), e você pode usar a lógica que fizer sentido para o seu caso.

Esses dados são utilizados pelo módulo BotCity Insights, que oferece dashboards e indicadores em tempo real sobre suas iniciativas de RPA.


Dica Adicional

Sempre que notar que o Runner travou, consulte o arquivo log.txt gerado durante a execução. Ele pode conter mensagens de erro ou exceções que ajudam a identificar o que impediu a tarefa de iniciar corretamente.


Conclusão

Se o Runner ficar preso no status "Executing task...", o mais provável é que recursos não tenham sido liberados corretamente em execuções anteriores. Garantir o encerramento adequado desses recursos e finalizar a tarefa corretamente via SDK do Maestro evita esse tipo de problema e ainda contribui para uma visão mais eficiente do desempenho da sua automação no BotCity Insights.