Risoluzione degli errori di runtime del criterio PythonScript

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

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

Possibili cause

Il criterio dello script Python può vengono generati diversi tipi di errori ScriptEvaluationFailed. Le sezioni seguenti descrivono alcuni di questi errori.

NameError

Se nel codice PythonScript è presente una variabile su 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 faultstring 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 precedente passaggio 1 e verifica se viene fatto riferimento alla variabile non definita identificata nel passaggio 1 precedente. 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. Controlla se la variabile specifica è definita all'interno del codice PythonScript. Se la variabile non è definita, è la causa dell'errore.

    Nello script di esempio mostrato 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 il PythonScript 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 una divisione o un'operazione 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 sorgente PythonScript identificato nel passaggio 1 precedente 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 a ciò che c'è nella 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 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

Oltre a quelle descritte sopra, esistono molte altre possibili cause dell'errore steps.script.ScriptEvaluationFailed. Per ulteriori informazioni, fai riferimento alla documentazione Python ufficiale.