Skript-Referenz

Diese Seite dokumentiert die öffentliche Headless-Scripting-API, die vom Python-Paket studio bereitgestellt wird.

Der Fokus liegt auf diesen öffentlichen Symbolen:

  • StudioScenario

  • install_logging_event

  • enable_logging_stdout

  • disable_logging_stdout

Wenn Sie noch nie ein Szenario headless ausgeführt haben, lesen Sie zuerst den Abschnitt "Headless" und kehren Sie dann hierher zurück, um die API-Details zu prüfen.


Imports

Alle hier dokumentierten APIs werden vom Top-Level-Paket studio exportiert:

from studio import (
	StudioScenario,
	install_logging_event,
	enable_logging_stdout,
	disable_logging_stdout,
)

Typ-Stubs

Die öffentliche Headless-Oberfläche sieht folgendermaßen aus:


StudioScenario

StudioScenario ist der Haupteinstiegspunkt zum Laden und Ausführen einer .pmod-Datei ohne die Desktop-Benutzeroberfläche.

Konstruktor

verification_code

Dieser Wert wird zur Lizenzierung für die Headless-Ausführung verwendet.

Gängige Muster:

  • Lokal / Server: Übergeben Sie den Verifikationscode als String.

  • Docker / CI: Mounten Sie eine Lizenzdatei in den Container und übergeben Sie den Pfad als verification_code.

⚠️ Warnung: Für nicht-interaktive Umgebungen (Docker/CI/Services) immer verification_code explizit übergeben.


Typischer Ablauf

In den meisten Skripten:

  1. Erstellen Sie das Szenario (StudioScenario(...)).

  2. Laden Sie eine .pmod (load_scenario(...)).

  3. Führen Sie es aus (run(...)).

  4. Bereinigen Sie (cleanup()).

Beispiel:

ℹ️ Hinweis: cleanup() ist wichtig in lang laufenden Prozessen (Services, Batch-Jobs), um Speicher freizugeben und den Laufzeitzustand zurückzusetzen.


Laden einer .pmod

  • Gibt StudioScenario bei Erfolg zurück.

  • Gibt None zurück, wenn der Pfad nicht existiert.

Wenn Ihr Szenario auf externe Ressourcen verweist, behalten Sie die gleiche Verzeichnisstruktur bei wie auf dem Desktop (siehe Abschnitt „Transferring .pmod files“).


Ausführen eines Szenarios

Die Laufzeit validiert, dass die Anzahl der Argumente mit der Anzahl der Szenarioeingänge übereinstimmt.

Wenn Ihre .pmod hat:

  • 0 Eingänge: rufen Sie scenario.run() oder scenario.run(()) auf

  • 1 Eingang: rufen Sie scenario.run((value,)) auf

  • 2 Eingänge: rufen Sie scenario.run((value1, value2)) auf

⚠️ Warnung: args muss ein Tuple sein. Für einen einzelnen Eingang nicht das abschließende Komma vergessen: (value,).


Weitere StudioScenario-Methoden

Dieser Abschnitt beschreibt zusätzliche öffentliche Methoden, die Sie für Automatisierung und Debugging verwenden können.

Laden ohne Fehler bei fehlenden Ressourcen

Wenn Sie Szenarien zwischen Maschinen/Containern verschieben und einige Ressourcen möglicherweise nicht verfügbar sind, können Sie permissiver laden:

Laden / Speichern

Custom Nodes

Laden Sie benutzerdefinierte Node-Python-Module aus einem Ordner:

⚠️ Warnung: Dies importiert Python-Dateien dynamisch. Laden Sie nur vertrauenswürdigen Code.

Szenario-Name

Ports (Szenario Eingänge/Ausgänge)

Sie können die Namen der Eingangs-/Ausgangsports abfragen:

Einen Webserver starten (optional)

Wenn Sie einen Szenario-Runner per HTTP bereitstellen möchten:

Events

Installieren Sie Lifecycle-Callbacks rund um die Szenarioausführung:


Logging-Hilfen

AugeLab Studio verfügt über einen Laufzeit-Logger, der von Blöcken und Szenarien verwendet wird. Im Headless-Modus möchten Sie typischerweise eines der folgenden:

  • Logs während der Entwicklung auf stdout ausgeben

  • Logs in Ihr eigenes Logging-System weiterleiten

Diese Hilfsfunktionen sind global (sie beeinflussen den Laufzeit-Logger, der von Ihrem Headless-Szenario verwendet wird).


enable_logging_stdout()

Aktiviert die „freundliche“ Laufzeitprotokollierung auf stdout.

Verwenden Sie dies, wenn Sie Block-/Szenario-Logs in der Konsole sehen möchten:


disable_logging_stdout()

Deaktiviert die Laufzeitprotokollierung nach stdout.

Nützlich wenn:

  • Sie install_logging_event(...) verwenden und doppelte Logs vermeiden möchten

  • Sie saubere Ausgabe möchten (nur eigene print(...)-/Logger-Ausgaben)


install_logging_event(event: Callable[[str], None])

Installiert einen Callback, der Laufzeit-Lognachrichten empfängt.

Das ist der einfachste Weg, AugeLab-Laufzeitlogs in Ihr eigenes Logging-Framework zu integrieren.

StudioScenario.install_logging_hook(hook, level=0)

Wenn Sie bevorzugen, Hooks pro Szenario zu installieren (mit Filterung nach Level), verwenden Sie:

⚠️ Warnung: Halten Sie Ihren Callback schnell. Wenn Sie schwere Arbeit (I/O, Netzwerk) durchführen müssen, ziehen Sie in Betracht, Nachrichten zu puffern und diese in einem anderen Thread/Prozess zu verarbeiten.


Empfohlene Muster

1) Umgebungsvariable für Lizenzierung

Für Skripte, die in unterschiedlichen Umgebungen (lokal vs CI vs Docker) laufen, ist das Übergeben von verification_code über eine Umgebungsvariable praktisch portabel:

2) Immer mit try/finally aufräumen

Zuletzt aktualisiert