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
pausepara 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.
--timeoutse aplica a cada operación de Playwright; auméntelo cuando la operación sea lenta.--checkpointreanuda un escenario largo.- No repita nunca una operación lenta que modifica algo sin comprobar antes el objetivo.