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
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""
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))
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
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 tointeger division or modulo by zero
:"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
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.