PythonScript politikası çalışma zamanı hatasını giderme

Apigee Edge belgelerini görüntülüyorsunuz.
Git: Apigee X belgeleri.
bilgi

ScriptEvaluationFailed

Hata kodu

steps.script.ScriptEvaluationFailed

Hata yanıtı gövdesi

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

Olası nedenler

Python Komut Dosyası politikası birçok farklı ScriptEvaluationFailed hatası türü döndürür. Bu hatalardan bazıları aşağıdaki bölümlerde açıklanmıştır.

NameError

PythonScript kodunda tanımlanmadan başvurulan veya çalıştırılan bir değişken varsa Ad hatası alırsınız.

Hata yanıtı gövdesi

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

Örnek hata yanıtı gövdesi

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

Teşhis

  1. PythonScript politikasını ve hata yanıtının faultstring öğesinden tanımlanmamış değişken adını tanımlayın. Örneğin, aşağıdaki hata dizesinde PythonScript adı myscript.py ve tanımlanmamış değişken adı num3'tür:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
  2. Yukarıdaki 1. adımda tanımlanan PythonScript kaynak dosyasını inceleyin ve yukarıdaki 1. adımda tanımlanan tanımlanmamış değişkene atılıp atılmadığını doğrulayın. Örneğin, aşağıdaki PythonScript kodu, hata dizesiyle eşleşen tanımlanmamış num3 değişkenine başvuruyor:

    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. Belirli bir değişkenin PythonScript kodunda tanımlanıp tanımlanmadığını kontrol edin. Değişken tanımlanmamışsa hatanın nedeni budur.

    Yukarıda gösterilen örnek komut dosyasında, num3 değişkeni tanımsızdır. Bu nedenle aşağıdaki hatayı alırsınız:

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

Çözünürlük

PythonScript kodunda başvurulan tüm değişkenlerin doğru şekilde tanımlandığından emin olun.

Yukarıda gösterilen örnek PythonScript ile ilgili sorunu düzeltmek için, kullanmadan önce num3 değişkenini tanımlayın. Örneğin:

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

Bu hata, bir bölme veya modül işleminin ikinci bağımsız değişkeni sıfır olduğunda ortaya çıkar.

Hata yanıtı gövdesi

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

Örnek hata yanıtı gövdesi

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

Teşhis

  1. PythonScript politika adını ve hata yanıtının faultstring öğesindeki hatanın nedenini tanımlayın. Örneğin, aşağıdaki hata dizesinde PythonScript adı myscript.py, hatanın nedeni ise integer division or modulo by zero şeklindedir:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
  2. Yukarıdaki 1. adımda tanımlanan PythonScript kaynak dosyasını inceleyin ve sıfıra bölme veya modülüs işlemi olup olmadığını doğrulayın. Örneğin, aşağıdaki PythonScript kodu, hata dizesindeki değerle eşleşen, sıfıra bölme işlemi gerçekleştirir:

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

    Yukarıda gösterilen örnek komut dosyasında, bölme işleminin ikinci bağımsız değişkeni sıfır olduğu için aşağıdaki hatayı alırsınız:

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

Çözünürlük

PythonScript'te bir bölüm veya modül işlemiyle ilgili ikinci bağımsız değişkenin sıfır olmadığından emin olun.

Yukarıda gösterilen örnek PythonScript ile ilgili sorunu düzeltmek için bir bölüm veya modül işleminin ikinci bağımsız değişkeni olarak sıfır dışında bir değer kullanın. Örneğin:

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

Daha Fazla Bilgi

steps.script.ScriptEvaluationFailed hatasının, yukarıda açıklananların dışında daha birçok olası nedeni vardır. Daha fazla bilgi için lütfen resmi Python dokümanlarına göz atın.