La operación lleva un tiempo, y no ve nada hasta que termina
Un clon, una importación, una actualización masiva. Dinoer informa solo una vez, al final; por lo tanto, un fallo después de treinta segundos te hace perder todo el tiempo de espera. Por qué un "timeout" no es un fallo, y el único parámetro que realmente ayuda.
El síntoma. Inicias algo que tarda un tiempo: una clonación de sitio, una importación, una actualización masiva, y esperas. Dinoer responde solo una vez, al final. Mientras tanto, la interfaz puede mostrar un indicador de carga, una barra de progreso, registros en vivo: nada de esto te llega hasta que el proceso termina.
Si la operación falla después de treinta segundos, usted se entera tres minutos después. Y cada iteración de su escenario cuesta de nuevo la duración completa.
¿Por qué funciona de esta manera?
Una invocación, una respuesta final: una observación terminal, no un flujo. Eso es lo que hace que una ejecución sea reproducible y su salida sea un único JSON legible, y eso es exactamente el costo de esta situación: no hay ninguna vista intermedia, porque Dinoer no produce ninguna imagen en absoluto, en ningún modo, para poder muestrearla.
Espera una señal, no una duración.
No utilice
<code>pause</code>para esperar a que una operación finalice.
Una pausa fija no se puede adaptar. Si la configuras a diez segundos y una operación que tarda quince, obtendrás un resultado mientras el trabajo aún está en curso; una operación que tarda dos desperdicia ocho segundos en cada iteración. Ambos modos de fallo son silenciosos.
[
{"type": "cliquer", "selecteur": "#start-clone"},
{"type": "attendre_absence", "selecteur": ".spinner"},
{"type": "attendre_selecteur_present", "selecteur": ".result-container"},
{"type": "extraire_texte"}
]
Espere a que el indicador de carga desaparezca, luego espere a que llegue el resultado. El escenario ahora tarda exactamente el mismo tiempo que la operación — ni más, ni menos. Use pause para lo que es bueno: un retraso deliberado, no una apuesta por una duración.
Aumentar --timeout para toda la operación.
/opt/dinoer/venv/bin/python3 /opt/dinoer/rpa.py \
--scenario clone.json --timeout 300000 --guide-version 1.6
--timeout (por defecto 10.000 ms) se aplica por cada operación de Playwright; una acción que modifica el estado y tarda mucho tiempo generalmente necesita un valor superior al predeterminado. No existe un tiempo de espera de captura separado del que hablar, porque esta herramienta no tiene una fase de captura.
Un tiempo de espera (timeout) no es un fallo; compruebe antes de volver a intentarlo.
Una solicitud que alcanza el tiempo de espera podría haber sido exitosa. El servidor no deja de funcionar porque el cliente dejó de esperar.
Observado en un caso real: una clonación activada por una solicitud POST clásica, sin AJAX, por lo que la solicitud HTTP permaneció abierta hasta que el servidor terminó. El clic finalizó en TimeoutError después de veinte segundos. La clonación ya se había iniciado y completado; esto se confirmó de la manera más difícil, repitiendo la operación “limpiamente” con un tiempo de espera generoso y obteniendo una segunda copia idéntica.
Antes de intentar nuevamente una operación larga que modifica datos: vaya y observe el objetivo. Un
TimeoutError al hacer clic significa que Playwright dejó de esperar, nada más.
En resumen
- Dinoer informa una sola vez, al final; no existe ninguna vista intermedia para solicitar información.
- Espere una señal de DOM, nunca por una duración fija.
--timeoutcubre cada operación de Playwright; levántelo para todo el escenario cuando la propia operación sea lenta.- Nunca intente nuevamente una acción que modifique los datos y sea lenta sin verificar primero el objetivo; es posible que lo esté haciendo dos veces.