Вы просматриваете документацию 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 Script может выдавать несколько различных типов ошибок ScriptEvaluationFailed
. В разделах ниже описаны некоторые из этих ошибок.
ИмяОшибка
Если в коде PythonScript есть переменная, на которую ссылаются или над которой работают, но она не определена, вы получаете ошибку имени.
Тело ответа об ошибке
{ "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 и неопределенное имя переменной из элемента errorstring ответа об ошибке. Например, в следующей строке ошибки имя PythonScript —
myscript.py
, а имя неопределенной переменной — num3 :"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
Изучите исходный файл PythonScript, указанный на шаге №1 выше, и проверьте, имеется ли ссылка на неопределенную переменную, указанную на шаге №1 выше. Например, следующий код PythonScript ссылается на неопределенную переменную num3 , которая соответствует строке ошибки:
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 и причину сбоя из элемента строки ошибки ответа об ошибке. Например, в следующей строке ошибки имя PythonScript —
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 выполняет деление на ноль, что соответствует значению строки ошибки:
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 .