Устранение ошибок во время выполнения политики PythonScript

Вы просматриваете документацию 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"
        }
    }
}

Диагноз

  1. Определите политику PythonScript и имя неопределенной переменной в элементе faultstring ответа об ошибке. Например, в следующем faultstring имя PythonScript — myscript.py , а имя неопределенной переменной — num3 :

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
  2. Изучите исходный файл 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))
  3. Проверьте, определена ли конкретная переменная в коде 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"
        }
    }
}

Диагноз

  1. Определите имя политики 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""
  2. Изучите исходный файл 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 .