Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
ScriptEvaluationFailed
Код ошибки
steps.script.ScriptEvaluationFailed
Тело ответа с ошибкой
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: error_type: error_description"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Возможные причины
Правила в отношении скриптов Python могут вызывать ошибки ScriptEvaluationFailed разных типов. Ниже описаны некоторые из этих ошибок.
NameError
Если в коде PythonScript есть переменная, на которую ссылаются или с которой выполняют операции, но она не определена, то возникает ошибка Name.
Тело ответа с ошибкой
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "NameError: variable_name is not defined"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Пример текста ответа с ошибкой
{ "fault": { "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
диагностика;
Определите правило PythonScript и название неопределенной переменной по элементу faultstring в ответе об ошибке. Например, в следующей строке ошибки имя PythonScript –
myscript.py, а имя неопределенной переменной – num3:"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
Проверьте исходный файл PythonScript, указанный на шаге 1, и убедитесь, что неопределенная переменная, указанная на шаге 1, не используется. Например, в следующем коде PythonScript есть ссылка на неопределенную переменную num3, которая соответствует faultstring:
num1 = 1.5 num2 = 6.3 sum = float(num1) + float(num3) print('The sum of {0} and {1} is {2}'.format(num1, num3 sum))
Проверьте, определена ли нужная переменная в коде PythonScript. Если переменная не определена, это и будет причиной ошибки.
В примере скрипта выше переменная num3 не определена. Поэтому вы получите ошибку, указанную ниже.
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
Разрешение
Убедитесь, что все переменные, на которые ссылается код PythonScript, определены правильно.
Чтобы исправить проблему в приведенном выше примере PythonScript, определите переменную num3 до ее использования. Пример:
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
Эта ошибка возникает, когда второй аргумент операции деления или вычисления остатка от деления равен нулю.
Тело ответа с ошибкой
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "ZeroDivisionError: reason_for_error"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Пример текста ответа с ошибкой
{ "fault": { "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
диагностика;
Определите название правила PythonScript и причину ошибки по элементу faultstring в ответе об ошибке. Например, в следующей строке ошибки имя скрипта Python –
myscript.py, а причина ошибки –integer division or modulo by zero:"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
Изучите исходный файл PythonScript, указанный на шаге 1, и проверьте, есть ли в нем операция деления или взятия остатка от деления на ноль. Например, следующий код PythonScript выполняет деление на ноль, что соответствует строке faultstring:
a = 0 b = 5 c = b/a print c
В приведенном выше примере скрипта второй аргумент операции деления равен нулю, поэтому возникает следующая ошибка:
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
Разрешение
Убедитесь, что второй аргумент операции деления или вычисления остатка от деления в PythonScript не равен нулю.
Чтобы исправить проблему в приведенном выше примере PythonScript, используйте ненулевое значение в качестве второго аргумента операции деления или вычисления остатка. Пример:
a = 3 b = 5 c = b/a print c
Дополнительная информация
Помимо описанных выше причин, ошибка steps.script.ScriptEvaluationFailed может возникать и по другим причинам. Дополнительную информацию можно найти в официальной документации по Python.