تحديد وحلّ المشاكل المتعلقة بوقت تشغيل سياسة PythonScript

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

ScriptEvaluationFailed

رمز الخطأ

steps.script.ScriptEvaluationFailed

نص استجابة الخطأ

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

الأسباب المحتملة

يمكن أن تعرض سياسة Python Script عدة أنواع مختلفة من أخطاء ScriptEvaluationFailed. توضّح الأقسام أدناه بعض هذه الأخطاء.

NameError

إذا كان هناك متغير في رمز PythonScript تتم الإشارة إليه أو تشغيله بدون تحديده، فستحصل على خطأ Name (الاسم).

نص استجابة الخطأ

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

مثال لنص الاستجابة للخطأ

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

التشخيص

  1. حدد سياسة PythonScript واسم المتغير غير المعروف من عنصر سلسلة العطل الخاص باستجابة الخطأ. على سبيل المثال، في سلسلة الخطأ التالية، اسم PythonScript هو myscript.py واسم المتغير غير المعروف هو num3:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
    
  2. افحص ملف مصدر PythonScript المحدد في الخطوة رقم 1 أعلاه وتحقق مما إذا كانت تتم الإشارة إلى المتغير غير المحدد المحدد في الخطوة رقم 1 أعلاه. على سبيل المثال، يشير رمز PythonScript التالي إلى المتغيّر غير المعروف num3، الذي يتطابق مع سلسلة العطاء:

    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. تحقق مما إذا كان قد تم تحديد المتغير المحدد في شفرة PythonScript. إذا لم يتم تحديد المتغير، يكون هذا هو سبب الخطأ.

    في مثال النص البرمجي الموضح أعلاه، يكون المتغير num3 غير محدّد. لذلك، ستظهر لك رسالة الخطأ التالية:

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

درجة الدقّة

تأكد من أن جميع المتغيرات المشار إليها في رمز PythonScript قد تم تحديدها بشكل صحيح.

لحلّ المشكلة في مثال PythonScript الموضّح أعلاه، حدِّد المتغيّر num3 قبل استخدامه. مثال:

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

يظهر هذا الخطأ عندما تكون الوسيطة الثانية لعملية القسمة أو الباقي صفرًا.

نص استجابة الخطأ


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

مثال لنص الاستجابة للخطأ


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

التشخيص

  1. حدد اسم سياسة PythonScript وسبب الإخفاق من عنصر سلسلة الخطأ لاستجابة الخطأ. على سبيل المثال، في سلسلة الخطأ التالية، اسم PythonScript هو myscript.py وسبب تعذّر العملية هو integer division or modulo by zero:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
    
  2. افحص ملف المصدر PythonScript المحدد في الخطوة رقم 1 أعلاه وتحقق مما إذا كانت هناك عملية قسمة أو معامل على صفر. على سبيل المثال، تؤدي شفرة PythonScript التالية عملية القسمة على صفر، والتي تتطابق مع ما هو موجود في سلسلة Falsestring:

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

    في مثال النص البرمجي الموضح أعلاه، نظرًا لأن الوسيطة الثانية لعملية القسمة تساوي صفرًا، تحصل على الخطأ التالي:

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

درجة الدقّة

تأكد من أن الوسيطة الثانية لعملية القسمة أو الباقي ليست صفرًا في PythonScript.

لحل المشكلة في مثال PythonScript الموضح أعلاه، استخدم قيمة غير صفرية كوسيطة ثانية لعملية قسمة أو باقي. مثال:

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

مزيد من المعلومات

هناك العديد من الأسباب الأخرى المحتملة للخطأ steps.script.ScriptEvaluationFailed بخلاف الأسباب الموضّحة أعلاه. يُرجى الرجوع إلى مستندات بايثون الرسمية للحصول على مزيد من المعلومات.