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

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

Диагностика

  1. Определите политику PythonScript и неопределенное имя переменной из элемента errorstring ответа об ошибке. Например, в следующей строке ошибки имя 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 и причину сбоя из элемента строки ошибки ответа об ошибке. Например, в следующей строке ошибки имя 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 .