أنت تعرض مستندات 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 تتم الإشارة إليه أو تشغيله بدون أن يتم تحديده، ستحصل على خطأ "الاسم".
نص استجابة الخطأ
{ "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" } } }
التشخيص
حدِّد سياسة PythonScript واسم المتغيّر غير المحدّد من عنصر faultstring في استجابة الخطأ. على سبيل المثال، في سلسلة الخطأ التالية، يكون اسم PythonScript هو
myscript.py
واسم المتغيّر غير المحدّد هو num3:"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
افحص ملف مصدر 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))
تحقق مما إذا كان المتغير المعني محددًا في رمز 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" } } }
التشخيص
حدِّد اسم سياسة 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""
افحص ملف مصدر PythonScript المحدد في الخطوة رقم 1 أعلاه وتحقَّق مما إذا كانت هناك عملية قسمة أو معامل على صفر. على سبيل المثال، تنفذ رمز PythonScript التالي عملية القسمة على صفر، والتي تتطابق مع محتوى سلسلة الخطأ:
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
بخلاف تلك الموضّحة أعلاه. يُرجى الرجوع إلى مستندات Python الرسمية للحصول على مزيد من المعلومات.