Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
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 . В разделах ниже описаны некоторые из этих ошибок.
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 ответа об ошибке. Например, в следующем 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 , которая соответствует строке ошибки:
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 в ответе на ошибку. Например, в следующем примере faultstring имя 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 .