Risoluzione degli errori di runtime del criterio PythonScript

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

ScriptEvaluationFailed

Codice di errore

steps.script.ScriptEvaluationFailed

Corpo della risposta all'errore

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

Possibili cause

Il criterio Python Script può generare diversi tipi di errori ScriptEvaluationFailed. Alcuni di questi errori vengono descritti nelle sezioni seguenti.

NameError

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

Corpo della risposta all'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"
        }
    }
}

Diagnostica

  1. Identifica il criterio PythonScript e il nome della variabile non definita dall'elemento faultstring della risposta di errore. Ad esempio, nella seguente stringa di errore, 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 riportato sopra e verifica se viene fatto riferimento alla variabile non definita identificata nel passaggio 1 riportato sopra. Ad esempio, il seguente codice PythonScript fa riferimento alla variabile non definita num3, che corrisponde alla stringa di errore:

    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. Verifica 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, 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 una divisione o di un'operazione modulo è zero.

Corpo della risposta all'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"
        }
    }
}

Diagnostica

  1. Identifica il nome del criterio PythonScript e il motivo dell'errore dall'elemento stringa di errore della risposta di errore. Ad esempio, nella seguente stringa di errore, 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 riportato sopra e verifica se è presente un'operazione di divisione o modulo pari a zero. Ad esempio, il seguente codice PythonScript esegue la divisione per zero, che corrisponde al contenuto della stringa di errore:

    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 una divisione o di un'operazione modulo non sia zero in PythonScript.

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

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

Ulteriori informazioni

Esistono molte altre possibili cause dell'errore steps.script.ScriptEvaluationFailed, oltre a quelle descritte sopra. Fai riferimento alla documentazione ufficiale di Python per ulteriori informazioni.