Rozwiązywanie problemów z błędami w środowisku wykonawczym zasad PythonScript

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

ScriptEvaluationFailed

Kod błędu

steps.script.ScriptEvaluationFailed

Treść odpowiedzi na błąd

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

Możliwe przyczyny

Zasada Skryptu Pythona może zwraca kilka różnych typów błędów typu ScriptEvaluationFailed. W sekcjach poniżej opisujemy niektóre z tych błędów.

NameError

Jeśli kod PythonScript zawiera zmienną, która jest używana do odwoływania się lub wykonywana operacji bez jej zdefiniowania, wystąpi błąd nazwy.

Treść odpowiedzi na błąd

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

Przykładowa treść odpowiedzi na błąd

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

Diagnostyka

  1. Identyfikuj zasadę PythonScript i niezdefiniowaną nazwę zmiennej z elementu ciągu znaków błędu odpowiedzi. Na przykład w tym ciągu błędów nazwa PythonScript to myscript.py, a niezdefiniowana nazwa zmiennej to num3:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
  2. Sprawdź plik źródłowy PythonScript zidentyfikowany w kroku 1 powyżej i sprawdź, czy jest w nim odwołanie do nieokreślonej zmiennej zidentyfikowanej w kroku 1 powyżej. Na przykład poniższy kod PythonScript odwołuje się do niezdefiniowanej zmiennej num3, która pasuje do ciągu znaków błędu:

    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. Sprawdź, czy dana zmienna jest zdefiniowana w kodzie PythonScript. Jeśli zmienna nie jest zdefiniowana, to właśnie jest przyczyną błędu.

    W przykładowym skrypcie opisanym powyżej zmienna num3 jest niezdefiniowana. W związku z tym pojawi się następujący błąd:

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

Rozdzielczość

Upewnij się, że wszystkie zmienne, do których odwołuje się kod PythonScript, są prawidłowo zdefiniowane.

Aby rozwiązać problem z pokazanym powyżej przykładowym skryptem Pythona, zdefiniuj zmienną num3 przed jej użyciem. Na przykład:

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

Ten błąd jest generowany, gdy drugi argument operacji dzielenia lub modulo jest równy 0.

Treść odpowiedzi na błąd

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

Przykładowa treść odpowiedzi na błąd

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

Diagnostyka

  1. Określ nazwę zasady PythonScript i przyczynę niepowodzenia na podstawie elementu z ciągiem błędu w odpowiedzi. Na przykład w tym ciągu błędów nazwa języka PythonScript to myscript.py, a przyczyna niepowodzenia to integer division or modulo by zero:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
  2. Sprawdź plik źródłowy PythonScript wskazany w kroku 1 powyżej i sprawdź, czy występuje dzielenie lub operacja na module przez zero. Na przykład ten kod w języku PythonScript przeprowadza dzielenie przez 0, co odpowiada wartości w ciągu znaków błędu:

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

    W przykładowym skrypcie pokazanym powyżej, ponieważ drugi argument operacji dzielenia ma wartość zero, pojawia się ten błąd:

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

Rozdzielczość

Upewnij się, że drugi argument operacji dzielenia lub operacji modulo w PythonScript jest różny od zera.

Aby rozwiązać problem z przykładowym kodem PythonScript pokazanym powyżej, użyj wartości innej niż zero jako drugiego argumentu operacji dzielenia lub modulo. Na przykład:

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

Więcej informacji

Istnieje wiele innych możliwych przyczyn błędu steps.script.ScriptEvaluationFailed poza tymi opisanymi powyżej. Więcej informacji znajdziesz w oficjalnej dokumentacji Pythona.