Risoluzione degli errori di runtime del criterio PythonScript

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza 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

Il criterio 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 utilizzata senza essere definita, viene visualizzato l'errore Name (Nome).

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"
        }
    }
}

Corpo di esempio 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 il criterio PythonScript e il nome della variabile non definita dall'elemento errorstring della risposta di errore. Ad esempio, nella stringa di errore seguente, il nome 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 all'interno del codice PythonScript. Se la variabile non è definita, questo è la causa dell'errore.

    Nello script di esempio riportato sopra, la variabile num3 non è definita. Di conseguenza, verrà visualizzato 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 l'esempio PythonScript 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"
        }
    }
}

Corpo di esempio 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 del criterio PythonScript e il motivo dell'errore dall'elemento errorstring della risposta di errore. Ad esempio, nella stringa di errore seguente, il nome 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 indicato 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 non sia pari a zero in PythonScript.

Per risolvere il problema con il PythonScript di esempio 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

Esistono molte altre cause possibili dell'errore steps.script.ScriptEvaluationFailed oltre a quelle descritte sopra. Per ulteriori informazioni, consulta la documentazione ufficiale di Python.