Solução de problemas de tempo de execução da política PythonScript

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

  1. 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""
  2. 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))
  3. 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

  1. 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""
  2. 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.