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

Wyświetlasz 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

Zasady skryptu w Pythonie mogą zgłaszać kilka różnych typów ScriptEvaluationFailedbłędów. W sekcjach poniżej opisujemy niektóre z tych błędów.

NameError

Jeśli w kodzie PythonScript znajduje się zmienna, do której odwołuje się kod lub na której wykonuje się operacje bez jej zdefiniowania, pojawi się 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. Zidentyfikuj zasadę PythonScript i niezdefiniowaną nazwę zmiennej w elemencie faultstring odpowiedzi na błąd. Na przykład w tym ciągu błędów nazwa skryptu Python to myscript.py, a nazwa niezdefiniowanej 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 wskazany w kroku 1 powyżej i upewnij się, że odwołuje się on do niezdefiniowanej zmiennej wskazanej w kroku 1 powyżej. Na przykład poniższy kod PythonScript odwołuje się do niezdefiniowanej zmiennej num3, która pasuje do komunikatu o błędzie:

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

    W przykładowym skrypcie powyżej zmienna num3 jest niezdefiniowana. Dlatego pojawi się poniższy błąd:

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

Rozdzielczość

Sprawdź, czy wszystkie zmienne, do których odwołuje się kod PythonScript, są prawidłowo zdefiniowane.

Aby rozwiązać problem z przykładowym skryptem PythonScript pokazanym powyżej, 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 występuje, gdy drugi argument operacji dzielenia lub modulo wynosi zero.

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. Zidentyfikuj nazwę zasady PythonScript i przyczynę błędu na podstawie elementu faultstring w odpowiedzi na błąd. Na przykład w tym ciągu błędów nazwa skryptu 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 i upewnij się, że nie ma w nim dzielenia ani operacji wyznaczania modułu przez zero. Na przykład ten kod PythonScript wykonuje dzielenie przez zero, co odpowiada temu, co znajduje się w ciągu faultstring:

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

    W przykładowym skrypcie powyżej drugi argument operacji dzielenia to zero, więc pojawia się ten błąd:

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

Rozdzielczość

Sprawdź, czy drugi argument operacji dzielenia lub modulo w skrypcie PythonScript nie jest zerem.

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

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

Więcej informacji

Oprócz opisanych powyżej przyczyn błędu steps.script.ScriptEvaluationFailed może być wiele innych. Więcej informacji znajdziesz w oficjalnej dokumentacji Pythona.