Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
ScriptEvaluationFailed
Código de error
steps.script.ScriptEvaluationFailed
Cuerpo de respuesta de error
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: error_type: error_description"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Posibles motivos
La política Script de Python puede generar varios tipos de errores ScriptEvaluationFailed
. En las secciones que se indican a continuación se describen algunos de estos errores.
NameError
Si hay una variable en el código de PythonScript a la que se hace referencia o se opera sin definirla, se produce un error de nombre.
Cuerpo de respuesta de error
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "NameError: variable_name is not defined"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Cuerpo de respuesta de error de ejemplo
{ "fault": { "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Diagnóstico
Identifica la política PythonScript y el nombre de la variable no definida en el elemento faultstring de la respuesta de error. Por ejemplo, en la siguiente cadena de error, el nombre de PythonScript es
myscript.py
y el nombre de la variable indefinida es num3:"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
Examina el archivo de origen de PythonScript identificado en el paso 1 anterior y comprueba si se hace referencia a la variable indefinida identificada en el paso 1 anterior. Por ejemplo, el siguiente código de PythonScript hace referencia a la variable indefinida num3, que coincide con 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))
Comprueba si la variable específica está definida en el código PythonScript. Si la variable no está definida, esa es la causa del error.
En la secuencia de comandos de ejemplo que se muestra arriba, la variable num3 no está definida. Por lo tanto, aparecerá el siguiente error:
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
Resolución
Asegúrate de que todas las variables a las que se hace referencia en el código de PythonScript estén definidas correctamente.
Para solucionar el problema del ejemplo de PythonScript que se muestra arriba, define la variable num3 antes de usarla. Por ejemplo:
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
Este error se produce cuando el segundo argumento de una operación de división o módulo es cero.
Cuerpo de respuesta de error
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "ZeroDivisionError: reason_for_error"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Cuerpo de respuesta de error de ejemplo
{ "fault": { "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Diagnóstico
Identifica el nombre de la política PythonScript y el motivo del error en el elemento faultstring de la respuesta de error. Por ejemplo, en la siguiente cadena de error, el nombre de PythonScript es
myscript.py
y el motivo del error esinteger division or modulo by zero
:"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
Examina el archivo de origen PythonScript identificado en el paso 1 anterior y comprueba si hay una división o una operación de módulo por cero. Por ejemplo, el siguiente código de PythonScript realiza una división entre cero, que coincide con lo que hay en faultstring:
a = 0 b = 5 c = b/a print c
En la secuencia de comandos de ejemplo que se muestra arriba, como el segundo argumento de la operación de división es cero, se produce el siguiente error:
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
Resolución
Asegúrate de que el segundo argumento de una operación de división o módulo no sea cero en PythonScript.
Para solucionar el problema del ejemplo de PythonScript que se muestra arriba, usa un valor distinto de cero como segundo argumento de una operación de división o módulo. Por ejemplo:
a = 3 b = 5 c = b/a print c
Más información
Hay muchas otras causas posibles del error steps.script.ScriptEvaluationFailed
además de las descritas anteriormente. Consulta la documentación oficial de Python para obtener más información.