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
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""
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))
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
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 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 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.