Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do
Apigee Edge.
ScriptEvaluationFailed
Código de erro
steps.script.ScriptEvaluationFailed
Corpo da resposta de erro
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: error_type: error_description"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Causas possíveis
A política de scripts Python pode gerar vários tipos diferentes de erros ScriptEvaluationFailed
. As secções abaixo descrevem alguns destes erros.
NameError
Se existir uma variável no código PythonScript que seja referenciada ou operada sem ser definida, recebe o erro de nome.
Corpo da resposta de erro
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "NameError: variable_name is not defined"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Exemplo de corpo da resposta de erro
{ "fault": { "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Diagnóstico
Identifique a política PythonScript e o nome da variável indefinida no elemento faultstring da resposta de erro. Por exemplo, na seguinte faultstring, o nome do PythonScript é
myscript.py
e o nome da variável indefinida é num3:"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
Examine o ficheiro de origem PythonScript identificado no passo n.º 1 acima e verifique se a variável indefinida identificada no passo n.º 1 acima está a ser referenciada. Por exemplo, o seguinte código PythonScript faz referência à variável indefinida num3, que corresponde a 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))
Verifique se a variável específica está definida no código PythonScript. Se a variável não estiver definida, essa é a causa do erro.
No script de exemplo apresentado acima, a variável num3 não está definida. Por conseguinte, recebe o erro abaixo:
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
Resolução
Certifique-se de que todas as variáveis referenciadas no código PythonScript estão devidamente definidas.
Para corrigir o problema com o PythonScript de exemplo apresentado acima, defina a variável num3 antes de a usar. Por exemplo:
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 erro é apresentado quando o segundo argumento de uma operação de divisão ou módulo é zero.
Corpo da resposta de erro
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "ZeroDivisionError: reason_for_error"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Exemplo de corpo da resposta de erro
{ "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
Identifique o nome da política PythonScript e o motivo da falha no elemento faultstring da resposta de erro. Por exemplo, na faultstring seguinte, o nome do PythonScript é
myscript.py
e o motivo da falha éinteger division or modulo by zero
:"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
Examine o ficheiro de origem PythonScript identificado no passo n.º 1 acima e verifique se existe uma divisão ou uma operação de módulo por zero. Por exemplo, o seguinte código PythonScript realiza uma divisão por zero, que corresponde ao que está em faultstring:
a = 0 b = 5 c = b/a print c
No exemplo de script apresentado acima, uma vez que o segundo argumento da operação de divisão é zero, recebe o seguinte erro:
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
Resolução
Certifique-se de que o segundo argumento de uma operação de divisão ou módulo não é zero no PythonScript.
Para corrigir o problema com o PythonScript de exemplo apresentado acima, use um valor diferente de zero como o segundo argumento de uma operação de divisão ou módulo. Por exemplo:
a = 3 b = 5 c = b/a print c
Mais informações
Existem muitas outras causas possíveis para o erro steps.script.ScriptEvaluationFailed
, além das descritas acima. Consulte a documentação oficial do Python para mais informações.