Você está visualizando a documentação do Apigee e do Apigee híbrido .
Veja a documentação do Apigee Edge .
Avaliação de script falhou
Código de erro
steps.script.ScriptEvaluationFailed
Corpo de resposta de erro
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: error_type: error_description"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
Possíveis causas
A política de script do Python pode gerar vários tipos diferentes de erros ScriptEvaluationFailed
. As seções abaixo descrevem alguns desses erros.
Erro de nome
Se houver uma variável no código PythonScript que seja referenciada ou operada sem ser definida, você receberá o erro Nome.
Corpo de 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 de 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 a partir do elemento faultstring da resposta de erro. Por exemplo, na faultstring a seguir, 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 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 está definida no código PythonScript. Se a variável não estiver definida, essa é a causa do erro.
No script de exemplo mostrado acima, a variável num3 está indefinida. Portanto, você receberá 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 estejam definidas corretamente.
Para corrigir o problema com o exemplo PythonScript mostrado acima, defina a variável num3 antes de usá-la. 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))
Erro de Divisão Zero
Este erro ocorre quando o segundo argumento de uma operação de divisão ou módulo é zero.
Corpo de 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 de 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 a partir do elemento faultstring da resposta de erro. Por exemplo, na sequência de caracteres de falha a seguir, o nome 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-fonte PythonScript identificado na etapa 1 acima e verifique se há uma divisão ou uma operação de módulo por zero. Por exemplo, o código PythonScript a seguir realiza a divisão por zero, o que corresponde ao que está na string de falha:
a = 0 b = 5 c = b/a print c
No script de exemplo mostrado acima, como o segundo argumento da operação de divisão é zero, você obtém 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 seja zero no PythonScript.
Para corrigir o problema com o exemplo PythonScript mostrado 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 obter mais informações.