Esta é a documentação da Apigee e da Apigee híbrida.
Confira a documentação da Apigee Edge.
ScriptEvaluationFailed
Código do 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 Python Script pode
gerar vários tipos diferentes de erros ScriptEvaluationFailed
. As seções abaixo descrevem alguns desses erros.
NameError
Se houver uma variável no código do PythonScript que é referenciada ou operada sem ser definida, você receberá o erro Name.
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 failurestring da resposta de erro. Por exemplo, na seguinte string de falha, 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 arquivo de origem do PythonScript identificado na etapa 1 acima e verifique se a variável indefinida identificada na etapa 1 acima está sendo referenciada. Por exemplo, o código PythonScript a seguir faz referência à variável indefinida num3, que corresponde à string de falha:
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 foi definida no código PythonScript. Se a variável não estiver definida, essa será a causa do erro.
No script de exemplo mostrado acima, a variável num3 é indefinida. Portanto, você receberá o seguinte erro:
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
Resolução
Verifique se todas as variáveis referenciadas no código PhytonScript estão definidas corretamente.
Para corrigir o problema com o PythonScript de exemplo acima, defina a variável num3 antes de usá-la. 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
Esse erro é gerado 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 failurestring da resposta de erro. Por exemplo, na seguinte failurestring, 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 arquivo de origem do PythonScript identificado na etapa 1 acima e verifique se há uma operação de divisão ou módulo por zero. Por exemplo, o código Python do seguinte script realiza a divisão por zero, que corresponde ao que está na string de falha:
a = 0 b = 5 c = b/a print c
No exemplo de script mostrado acima, como o segundo argumento da operação de divisão é zero, você recebe o seguinte erro:
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
Resolução
Garanta que o segundo argumento de uma operação de divisão ou módulo não seja zero no PythonScript.
Para corrigir o problema com o PythonScript de exemplo mostrado acima, use um valor diferente de zero como o segundo argumento de uma operação de divisão ou módulo. Exemplo:
a = 3 b = 5 c = b/a print c
Mais informações
Há muitas outras causas possíveis para o erro steps.script.ScriptEvaluationFailed
além daquelas descritas acima. Para mais informações, consulte a documentação oficial do Python.