Dinoer

Der Vorgang dauert eine Weile, und Sie sehen nichts, bis er abgeschlossen ist

Ein Klon, ein Import, eine Massenaktualisierung. Dinoer meldet einmalig am Ende – daher kostet ein Fehler nach dreißig Sekunden die volle Wartezeit. Warum ein Timeout kein Fehler ist und welcher Parameter tatsächlich hilft.

Das Problem. Sie starten einen langwierigen Prozess – eine Seitenkopie, einen Import, ein Massenupdate – und warten. Dinoer gibt nur einmal am Ende eine Antwort zurück. In der Zwischenzeit zeigt die Benutzeroberfläche möglicherweise einen Ladebalken, eine Fortschrittsanzeige oder Live-Protokolle: Keine dieser Informationen erreicht Sie, bis der Vorgang abgeschlossen ist.

Wenn die Operation nach dreißig Sekunden fehlschlägt, erfahren Sie das erst drei Minuten später. Und jede Iteration Ihres Szenarios kostet erneut die volle Dauer.

Warum es so funktioniert

Eine einzelne Anforderung, eine endgültige Antwort – eine abschließende Beobachtung, kein Datenstrom. Das ist es, was einen Durchlauf reproduzierbar macht und seine Ausgabe ein einzelnes, lesbares JSON, und das ist genau der Preis für diese Situation: Es gibt keine Zwischenansicht, weil Dinoer in keiner Modus überhaupt kein Bild erzeugt, von dem man eine Stichprobe entnehmen könnte.

Warten Sie auf ein Signal, nicht auf eine Zeitdauer

Verwenden Sie nicht <code>pause</code> um auf das Ende einer Operation zu warten.

Eine feste Pause kann sich nicht anpassen. Wenn Sie sie auf zehn Sekunden setzen und ein Vorgang, der fünfzehn benötigt, ausgeführt wird, erhalten Sie ein Ergebnis, während der Vorgang noch läuft; ein Vorgang, der zwei Sekunden benötigt, verschwendet acht Sekunden bei jeder Iteration. Beide Fehlermodi sind unsichtbar.

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

Warten Sie, bis der Ladebalken verschwindet, und dann bis das Ergebnis erscheint. Das Szenario dauert jetzt genau so lange wie die Operation selbst – weder länger noch kürzer. Behalten Sie pause für das, wofür es gut ist: eine bewusste Verzögerung, nicht eine Vermutung über eine Dauer.

Erhöhen Sie --timeout für die gesamte Operation.

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

--timeout (Standardwert: 10.000 ms) gilt für jede Playwright-Operation – eine umfangreiche Aktion, die den Zustand verändert, benötigt in der Regel einen deutlich höheren Wert als den Standard. Es gibt keinen separaten Timeout für das Erfassen von Daten, da dieses Tool keinen solchen Schritt beinhaltet.

Ein Timeout ist kein Fehler – prüfen Sie, bevor Sie es erneut versuchen

Eine Anfrage, die ein Timeout erreicht, kann trotzdem erfolgreich gewesen sein. Der Server hört nicht auf zu funktionieren, nur weil der Client das Warten abgebrochen hat.

Beobachtet in der Realität: Ein Klon wurde durch einen klassischen POST-Request ausgelöst, ohne AJAX, sodass die HTTP-Anfrage offen blieb, bis der Server fertig war. Der Klick endete nach zwanzig Sekunden bei TimeoutError. Der Klon war bereits gestartet und abgeschlossen worden – dies wurde auf die harte Tour bestätigt, indem die Operation “sauber” mit einem großzügigen Timeout erneut ausgeführt wurde und ein zweiter, identischer Klon erzeugt wurde.

Bevor Sie einen langen, verändernden Vorgang erneut ausführen: schauen Sie sich das Ziel an. Ein TimeoutError bei einem Klick bedeutet, dass Playwright aufgehört hat zu warten, nichts weiter.

Kurz gesagt

  • Dinoer meldet einmal, am Ende – es gibt keine Zwischenansicht, die abgefragt werden könnte.
  • Warten Sie auf ein DOM-Signal, niemals auf eine feste Dauer.
  • --timeout deckt jede Playwright-Operation ab; lösen Sie sie für das gesamte Szenario aus, wenn die Operation selbst langsam ist.
  • Versuchen Sie niemals, eine langsame, verändernde Aktion erneut auszuführen, ohne zuerst das Ziel zu überprüfen – Sie könnten dies zweimal tun.