Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Testen und Debuggen langlebiger Funktionen
Das lokale Testen und Debuggen langlebiger Funktionen funktioniert ähnlich wie reguläre Lambda-Funktionen, mit automatischer Unterstützung für Checkpointing und Replay. Dieses Handbuch behandelt gängige Testszenarien und Techniken zur Fehlerbehebung.
Lokaler Test-Workflow
Wenn langlebige Funktionen lokal getestet werden, unterscheidet sich der Workflow von regulären Lambda-Funktionen:
Arbeitsablauf beim Testen dauerhafter Funktionen
-
Erstellen Sie Ihre Anwendung:
$sam build -
Rufen Sie Ihre dauerhafte Funktion auf:
$sam local invoke MyDurableFunction --durable-execution-name test -
Überprüfen Sie bei Bedarf den Ausführungsverlauf:
$sam local execution historyexecution-id
Allgemeine Testszenarien
Testen des Checkpointing-Verhaltens
Um zu testen, ob Ihre Funktion ordnungsgemäß funktioniert, gehen Sie wie folgt vor:
# Example Python durable function def handler(event, context): # This will create a checkpoint context.wait(10) # Wait 10 seconds # Function resumes here after wait return {"message": "Function resumed after wait"}
Wenn Sie diese Funktion lokal aufrufen, wird die Wartezeit automatisch behandelt.
Callback-Szenarien testen
Für Funktionen, die auf externe Rückrufe warten:
-
Starten Sie Ihre dauerhafte Funktion, die auf einen Rückruf wartet
-
Löse den Rückruf in einem anderen Terminal auf:
$sam local callback succeedcallback-id -
Beobachten Sie, wie die Funktion die Ausführung fortsetzt
Fehlerbehebung
Dauerhafte Funktion wird nicht ordnungsgemäß ausgeführt
Problem: Die Funktion verhält sich nicht wie eine dauerhafte Funktion.
Lösungen:
-
Vergewissern Sie
DurableConfigsich, dass dies in Ihrer SAM-Vorlage festgelegt ist -
Stellen Sie sicher, dass Ihr Funktionscode SDK-Methoden für dauerhafte Funktionen verwendet
context.wait()(z. B. -
Überprüfe, ob du eine unterstützte Runtime (TypeScript, JavaScript, Python) verwendest
Der Ausführungsverlauf kann nicht abgerufen werden
Problem: Der local execution history Befehl gibt keine Ergebnisse zurück.
Lösungen:
-
Stellen Sie sicher, dass die Ausführungs-ID korrekt ist
-
Vergewissern Sie sich, dass die Funktion mindestens einmal aufgerufen wurde
Callback-Befehle funktionieren nicht
Problem: Callback-Befehle lösen ausstehende Operationen nicht auf.
Lösungen:
-
Stellen Sie sicher, dass die Rückruf-ID korrekt ist
-
Stellen Sie sicher, dass die Funktion tatsächlich auf einen Rückruf wartet
-
Stellen Sie sicher, dass Sie die richtige Callback-Befehlssyntax verwenden
Tipps zum Debuggen
-
Ausführungshistorie verwenden — Sehen Sie sich den Ausführungsverlauf an, um den Ablauf Ihrer dauerhaften Funktion nachzuvollziehen
-
Testen Sie inkrementell — Beginnen Sie mit einfachen Warteoperationen, bevor Sie komplexe Logik hinzufügen
-
Ausführliche Protokollierung verwenden — Aktivieren Sie die detaillierte Protokollierung, um den Ausführungsablauf nachzuverfolgen
Weitere Informationen
Weitere Informationen zum Testen und Debuggen finden Sie unter:
-
Einführung in das Testen mit sam local invoke- Dokumentation zum lokalen Aufrufen
-
sam local execution history- Ausführungshistorie