Risoluzione dei problemi relativi agli errori di runtime dei criteri PythonScript

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.

ScriptEvaluationFailed

Codice di errore

steps.script.ScriptEvaluationFailed

Corpo della risposta di errore

{
    "fault": {
        "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: error_type: error_description"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Cause possibili

La policy Script Python può generare diversi tipi di errori ScriptEvaluationFailed. Le sezioni seguenti descrivono alcuni di questi errori.

NameError

Se nel codice PythonScript è presente una variabile a cui viene fatto riferimento o su cui viene eseguita un'operazione senza essere definita, viene visualizzato l'errore Name.

Corpo della risposta di errore

{
    "fault": {
        "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "NameError: variable_name is not defined"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Esempio di corpo della risposta di errore

{
    "fault": {
        "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Diagnosi

  1. Identifica la policy PythonScript e il nome della variabile non definita dall'elemento faultstring della risposta di errore. Ad esempio, nella seguente stringa di errore, il nome di PythonScript è myscript.py e il nome della variabile non definita è num3:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
  2. Esamina il file di origine PythonScript identificato nel passaggio 1 sopra e verifica se viene fatto riferimento alla variabile non definita identificata nel passaggio 1 sopra. Ad esempio, il seguente codice PythonScript fa riferimento alla variabile non definita num3, che corrisponde 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))
  3. Controlla se la variabile specifica è definita nel codice PythonScript. Se la variabile non è definita, questo è il motivo dell'errore.

    Nello script di esempio mostrato sopra, la variabile num3 non è definita. Pertanto, riceverai il seguente errore:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""

Risoluzione

Assicurati che tutte le variabili a cui viene fatto riferimento nel codice PythonScript siano definite correttamente.

Per risolvere il problema con lo script Python di esempio mostrato sopra, definisci la variabile num3 prima di utilizzarla. Ad esempio:

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

Questo errore viene generato quando il secondo argomento di un'operazione di divisione o modulo è zero.

Corpo della risposta di errore

{
    "fault": {
        "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "ZeroDivisionError: reason_for_error"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Esempio di corpo della risposta di errore

{
    "fault": {
        "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Diagnosi

  1. Identifica il nome della policy PythonScript e il motivo dell'errore dall'elemento faultstring della risposta di errore. Ad esempio, nella seguente stringa di errore, il nome di PythonScript è myscript.py e il motivo dell'errore è integer division or modulo by zero:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
  2. Esamina il file di origine PythonScript identificato nel passaggio 1 sopra e verifica se è presente un'operazione di divisione o modulo per zero. Ad esempio, il seguente codice PythonScript esegue la divisione per zero, che corrisponde a quanto riportato in faultstring:

    a = 0
    b = 5
    c = b/a
    print c

    Nello script di esempio mostrato sopra, poiché il secondo argomento dell'operazione di divisione è zero, viene visualizzato il seguente errore:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""

Risoluzione

Assicurati che il secondo argomento di un'operazione di divisione o modulo sia diverso da zero in PythonScript.

Per risolvere il problema con l'esempio di PythonScript mostrato sopra, utilizza un valore diverso da zero come secondo argomento di un'operazione di divisione o modulo. Ad esempio:

a = 3
b = 5
c = b/a
print c

Ulteriori informazioni

Oltre a quelli descritti sopra, esistono molti altri possibili motivi dell'errore steps.script.ScriptEvaluationFailed. Per saperne di più, consulta la documentazione ufficiale di Python.