Fehlerbehebung bei Laufzeitfehler in PythonScript-Richtlinie

Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

ScriptEvaluationFailed

Fehlercode

steps.script.ScriptEvaluationFailed

Fehlerantworttext

{
    "fault": {
        "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: error_type: error_description"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Mögliche Ursachen

Die Richtlinie Python Script kann verschiedene Typen von ScriptEvaluationFailed-Fehlern enthalten. In den folgenden Abschnitten werden einige dieser Fehler beschrieben.

NameError

Enthält der PythonScript-Code eine Variable, auf die verwiesen oder die verwendet wird, ohne definiert zu sein, wird der Fehler "Name" ausgegeben.

Fehlerantworttext

{
    "fault": {
        "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "NameError: variable_name is not defined"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Beispieltext für eine Fehlerantwort

{
    "fault": {
        "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Diagnose

  1. Ermitteln Sie die PythonScript-Richtlinie und den nicht definierten Variablennamen aus dem Errorstring-Element der Fehlerantwort. Im folgenden Fehlerstring lautet der PythonScript-Name beispielsweise myscript.py und der nicht definierte Variablenname num3:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
  2. Überprüfen Sie die in Schritt 1 ermittelte PythonScript-Quelldatei und prüfen Sie, ob auf die in Schritt 1 identifizierte nicht definierte Variable verwiesen wird. Der folgende PythonScript-Code verweist beispielsweise auf die nicht definierte Variable num3, die mit dem Fehlerstring übereinstimmt:

    num1 = 1.5
    num2 = 6.3
    sum = float(num1) + float(num3)
    print('The sum of {0} and {1} is {2}'.format(num1, num3 sum))
  3. Prüfen Sie, ob die jeweilige Variable im PythonScript-Code definiert ist. Wenn die Variable nicht definiert ist, ist dies die Ursache des Fehlers.

    Im oben aufgeführten Beispielskript ist die Variable num3 nicht definiert. Daher wird folgender Fehler ausgegeben:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""

Lösung

Achten Sie darauf, dass alle Variablen, auf die im PythonScript-Code verwiesen wird, ordnungsgemäß definiert sind.

Um das Problem mit dem oben gezeigten PythonScript-Beispiel zu beheben, definieren Sie die Variable num3, bevor Sie sie verwenden. Beispiel:

num1 = 1.5
num2 = 6.3
num3 = 8.7
sum = float(num1) + float(num3)
print('The sum of {0} and {1} is {2}'.format(num1, num3, sum))

ZeroDivisionError

Dieser Fehler tritt auf, wenn das zweite Argument eines Divisions- oder Modulo-Vorgangs null ist.

Fehlerantworttext

{
    "fault": {
        "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "ZeroDivisionError: reason_for_error"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Beispieltext für eine Fehlerantwort

{
    "fault": {
        "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Diagnose

  1. Identifizieren Sie den PythonScript-Richtliniennamen und den Grund für das Fehlschlagen aus dem Errorstring-Element der Fehlerantwort. Im folgenden Fehlerstring lautet der PythonScript-Name beispielsweise myscript.py und der Grund für den Fehler ist integer division or modulo by zero:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
  2. Untersuchen Sie die in Schritt 1 identifizierte PythonScript-Quelldatei und prüfen Sie, ob eine Division oder modulare Operation mit Null vorliegt. Der folgende PythonScript-Code führt zum Beispiel eine Division durch null aus, was dem Ergebnis im Fehlerstring entspricht:

    a = 0
    b = 5
    c = b/a
    print c

    Im obigen Beispielskript wird der folgende Fehler ausgegeben, da das zweite Argument des Divisionsvorgangs null ist:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""

Lösung

Achten Sie darauf, dass das zweite Argument eines Divisions- oder Modulo-Vorgangs in PythonScript nicht null ist.

Um das Problem mit dem oben gezeigten PythonScript-Beispiel zu beheben, verwenden Sie als zweites Argument eines Divisions- oder Modulo-Vorgangs einen Wert ungleich null. Beispiel:

a = 3
b = 5
c = b/a
print c

Weitere Informationen

Es gibt neben dem oben beschriebenen Fehler noch viele andere Ursachen für den steps.script.ScriptEvaluationFailed-Fehler. Weitere Informationen finden Sie in der offiziellen Python-Dokumentation.