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

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

ScriptEvaluationFailed

Kod błędu

steps.script.ScriptEvaluationFailed

Treść odpowiedzi o błędzie

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

Możliwe przyczyny

Zasada Python Script może wywoływać kilka różnych typów błędów ScriptEvaluationFailed. Niektóre z tych błędów znajdziesz w sekcjach poniżej.

NameError

Jeśli w kodzie PythonScript znajduje się zmienna, która jest przywoływana lub obsługiwana bez jej zdefiniowania, wystąpi błąd „Nazwa”.

Treść odpowiedzi o błędzie

{
    "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 z elementu faultstring odpowiedzi błędu. Na przykład w tym ciągu znaków nazwa skryptu Pythona 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 określony w kroku 1 powyżej i sprawdź, czy odwołuje się do niezdefiniowanej zmiennej określonej w kroku 1 powyżej. Na przykład ten kod w języku PythonScript odwołuje się do niezdefiniowanej zmiennej num3, która odpowiada ciągowi błędów:

    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 przyczyną błędu.

    W przykładowym skrypcie pokazanym powyżej zmienna num3 jest niezdefiniowana. Pojawi się ten 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 0.

Treść odpowiedzi o błędzie


{
    "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ę niepowodzenia w elemencie faultstring odpowiedzi błędu. Na przykład w tym ciągu błędów nazwa skryptu Pythona to myscript.py, a przyczyna błędu jest 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 w języku PythonScript określony w kroku 1 powyżej i sprawdź, czy występuje operacja podziału lub modułu na 0. Na przykład poniższy kod w języku PythonScript wykonuje dzielenie przez 0, co jest zgodne z treścią ciągu błędów:

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

    W przykładowym skrypcie powyżej, ponieważ drugi argument operacji dzielenia wynosi 0, pojawia się następujący błąd:

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

Rozdzielczość

Sprawdź, czy w Pythonie drugi argument dzielenia lub operacji modulo ma wartość inną niż 0.

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

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

Więcej informacji

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