Dinoer

La operación tarda, y no ve nada hasta que termina

Una importación, una copia, una actualización masiva. Dinoer responde una sola vez, al final: un fallo a los treinta segundos le cuesta toda la espera. Por qué un tiempo agotado no es un fallo, y los ajustes que ayudan.

El síntoma. Lanza algo lento (una importación, la copia de un sitio, una actualización masiva) y espera. Dinoer responde una vez, al final. Mientras tanto, la interfaz quizá muestre un indicador de carga, una barra de progreso, registros en directo: nada de eso le llega antes de que termine la ejecución.

Si la operación falla a los treinta segundos, lo sabrá al final de la ejecución, y cada nuevo intento vuelve a costar toda la duración.

Por qué funciona así

Una llamada, una respuesta final, no un flujo. Eso hace que una ejecución sea reproducible y que su salida sea un único documento JSON, y es lo que aquí le cuesta: no hay ningún estado intermedio que consultar.

Esperar una señal, no una duración

No use pause para esperar a que termine una operación.

Una pausa fija no se adapta. Con diez segundos, una operación que tarda quince se lee cuando aún está en curso; una que tarda dos hace perder ocho segundos en cada intento. Ninguno de los dos errores se nota.

[
  {"type": "cliquer", "selecteur": "#start-clone"},
  {"type": "attendre_absence", "selecteur": ".spinner"},
  {"type": "attendre_selecteur_present", "selecteur": ".result-container"},
  {"type": "extraire_texte"}
]

Espere a que desaparezca el indicador y luego a que aparezca el resultado. El escenario dura entonces exactamente lo que dura la operación.

Aumentar --timeout para una operación lenta

/opt/dinoer/venv/bin/python3 /opt/dinoer/rpa.py \
  --scenario clone.json --timeout 300000 --guide-version 1.6

--timeout (10 000 ms por defecto) se aplica a cada operación de Playwright: una acción larga suele necesitar mucho más que el valor por defecto. Para un escenario largo, --checkpoint <archivo> guarda la sesión y el número de la última acción correcta, para que una nueva ejecución continúe desde ahí; el archivo se borra cuando el escenario termina con éxito.

Un tiempo agotado no es un fallo: compruebe antes de repetir

Un envío que supera el tiempo de espera puede haber funcionado. El servidor no se detiene porque el cliente haya dejado de esperar.

Un formulario enviado sin JavaScript mantiene abierta la solicitud HTTP hasta que el servidor termina. Si eso tarda más que el tiempo de espera, el clic acaba en TimeoutError mientras la operación sigue y se completa. Repítala «por si acaso» y se ejecutará dos veces.

Antes de repetir una operación larga que modifica algo, mire el objetivo. Un TimeoutError en un clic significa que Playwright dejó de esperar, nada más.

En resumen

  • Dinoer responde una vez, al final; no hay estado intermedio que consultar.
  • Espere un cambio en la página, nunca una duración fija.
  • --timeout se aplica a cada operación de Playwright; auméntelo cuando la operación sea lenta. --checkpoint reanuda un escenario largo.
  • No repita nunca una operación lenta que modifica algo sin comprobar antes el objetivo.