Résoudre les erreurs d'exécution de la règle PythonScript

Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Consultez la documentation d'Apigee Edge.

ScriptEvaluationFailed

Code d'erreur

steps.script.ScriptEvaluationFailed

Corps de la réponse d'erreur

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

Causes possibles

La règle PythonScript peut signaler plusieurs types d'erreurs ScriptEvaluationFailed. Les sections ci-dessous décrivent certaines de ces erreurs.

NameError

S'il existe une variable dans le code PythonScript qui est référencée ou utilisée sans avoir été définie, l'erreur NameError s'affiche.

Corps de la réponse d'erreur

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

Exemple de corps de réponse d'erreur

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

Diagnostic

  1. Identifiez la règle PythonScript et le nom de la variable non définie à partir de l'élément faultstring de la réponse d'erreur. Par exemple, dans l'élément faultstring suivant, le nom PythonScript est myscript.py et le nom de la variable non définie est num3 :

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
  2. Examinez le fichier source PythonScript identifié à l'étape 1 ci-dessus et vérifiez si la variable non définie identifiée à l'étape 1 ci-dessus est référencée. Par exemple, le code PythonScript suivant référence la variable num3 non définie, qui correspond à l'élément 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. Vérifiez si la variable spécifique est définie dans le code PythonScript. Si la variable n'est pas définie, il s'agit de la cause de l'erreur.

    Dans l'exemple de script ci-dessus, la variable num3 n'est pas définie. Par conséquent, vous obtenez l'erreur suivante :

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

Solution

Vérifiez que toutes les variables référencées dans le code PythonScript sont correctement définies.

Pour résoudre le problème de l'exemple PythonScript présenté ci-dessus, définissez la variable num3 avant de l'utiliser. Exemple :

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

Cette erreur est générée lorsque le deuxième argument d'une opération modulo ou de division est égal à zéro.

Corps de la réponse d'erreur

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

Exemple de corps de réponse d'erreur

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

Diagnostic

  1. Identifiez le nom de la règle PythonScript et le motif de l'échec à partir de l'élément failstring de la réponse d'erreur. Par exemple, dans l'élément faultstring suivant, le nom PythonScript est myscript.py et le motif de l'échec est integer division or modulo by zero :

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
  2. Examinez le fichier source PythonScript identifié à l'étape01 ci-dessus et vérifiez s'il existe une opération modulo ou de division égale à zéro. Par exemple, le code PythonScript suivant effectue une division par zéro, qui correspond au contenu de l'élément faultstring :

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

    Dans l'exemple de script ci-dessus, le deuxième argument de l'opération de division étant égal à zéro, l'erreur suivante s'affiche :

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

Solution

Assurez-vous que le deuxième argument d'une opération modulo ou de division n'est pas nul dans PythonScript.

Pour résoudre le problème de l'exemple PythonScript présenté ci-dessus, utilisez une valeur différente de zéro comme deuxième argument d'une opération modulo ou de division. Exemple :

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

En savoir plus

Il existe de nombreuses autres causes possibles de l'erreur steps.script.ScriptEvaluationFailed outre celles décrites ci-dessus. Pour en savoir plus, consultez la documentation officielle de Python.