Dinoer

L'opération prend du temps, et vous ne voyez rien avant la fin

Un import, une copie, une mise à jour en masse. Dinoer répond une seule fois, à la fin : un échec au bout de trente secondes vous coûte toute l'attente. Pourquoi un délai dépassé n'est pas un échec, et les réglages qui aident.

Le symptôme. Vous lancez quelque chose de lent (un import, la copie d’un site, une mise à jour en masse) et vous attendez. Dinoer répond une fois, à la fin. Pendant ce temps, l’interface affiche peut-être un indicateur de chargement, une barre de progression, des journaux en direct : rien de tout cela ne vous parvient avant la fin de l’exécution.

Si l’opération échoue au bout de trente secondes, vous l’apprenez à la fin de l’exécution, et chaque nouvel essai coûte de nouveau toute la durée.

Pourquoi cela fonctionne ainsi

Un appel, une réponse finale, pas un flux. C’est ce qui rend une exécution reproductible et sa sortie lisible en un seul document JSON, et c’est ce qui vous coûte ici : il n’existe aucun état intermédiaire à demander.

Attendre un signal, pas une durée

N’utilisez pas pause pour attendre la fin d’une opération.

Une pause fixe ne s’adapte pas. Réglée sur dix secondes, elle fait lire une opération de quinze secondes pendant qu’elle tourne encore ; une opération de deux secondes fait perdre huit secondes à chaque essai. Aucune de ces deux erreurs ne se voit.

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

Attendez que l’indicateur disparaisse, puis que le résultat apparaisse. Le scénario dure alors exactement autant que l’opération.

Relever --timeout pour une opération lente

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

--timeout (10 000 ms par défaut) s’applique à chaque opération de Playwright : une action longue demande d’ordinaire bien plus que la valeur par défaut. Pour un scénario long, --checkpoint <fichier> enregistre la session et le rang de la dernière action réussie, pour qu’une nouvelle exécution reprenne à cet endroit ; le fichier est supprimé quand le scénario se termine avec succès.

Un délai dépassé n’est pas un échec : vérifiez avant de relancer

Un envoi qui dépasse le délai a peut-être réussi. Le serveur ne s’arrête pas parce que le client a cessé d’attendre.

Un formulaire envoyé sans JavaScript garde la requête HTTP ouverte jusqu’à ce que le serveur ait fini. Si cela prend plus longtemps que le délai, le clic se termine par un TimeoutError pendant que l’opération continue et aboutit. Relancez-la « pour être sûr », et elle s’exécute deux fois.

Avant de relancer une opération longue qui modifie quelque chose, allez voir la cible. Un TimeoutError sur un clic signifie que Playwright a cessé d’attendre, rien de plus.

En bref

  • Dinoer répond une fois, à la fin ; il n’y a pas d’état intermédiaire à demander.
  • Attendez un changement dans la page, jamais une durée fixe.
  • --timeout s’applique à chaque opération de Playwright ; relevez-le quand l’opération est lente. --checkpoint reprend un scénario long.
  • Ne relancez jamais une opération lente qui modifie quelque chose sans avoir d’abord vérifié la cible.