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

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
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ı, çeşitli ScriptEvaluationFailed hata türlerine neden olabilir. Bu hatalardan bazıları aşağıdaki bölümlerde açıklanmaktadır.

NameError

PythonScript kodunda tanımlanmadan başvurulan veya üzerinde işlem yapılan bir değişken varsa Name 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. Hata yanıtının faultstring öğesinden PythonScript politikasını ve tanımlanmamış değişken adını belirleyin. Örneğin, aşağıdaki faultstring'de PythonScript adı myscript.py, tanımlanmamış değişken adı ise 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ımsız değişkenin referans verilip verilmediğini doğrulayın. Örneğin, aşağıdaki PythonScript kodu, faultstring ile eşleşen tanımlanmamış num3 değişkenine referans veriyor:

    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. İlgili değişkenin PythonScript kodu içinde 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ımlanmamıştı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 referans verilen tüm değişkenlerin düzgün şekilde tanımlandığından emin olun.

Yukarıda gösterilen örnek PythonScript ile ilgili sorunu düzeltmek için num3 değişkenini kullanmadan önce 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, bölme veya modulo 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. Hata yanıtının faultstring öğesinden PythonScript politika adını ve hatanın nedenini belirleyin. Örneğin, aşağıdaki faultstring'de PythonScript adı myscript.py, hatanın nedeni ise integer division or modulo by zero'dir:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
  2. Yukarıdaki 1. adımda belirtilen PythonScript kaynak dosyasını inceleyin ve sıfıra bölme veya sıfırla modulo işlemi olup olmadığını doğrulayın. Örneğin, aşağıdaki PythonScript kodu, hata dizesindekiyle eşleşen bir 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ğundan 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ölme veya modulo işleminin ikinci bağımsız değişkeninin sıfır olmadığından emin olun.

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

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

Daha Fazla Bilgi

Yukarıda açıklananların dışında steps.script.ScriptEvaluationFailed hatasının birçok olası nedeni vardır. Daha fazla bilgi için lütfen resmi Python belgelerine bakın.