מוצג המסמך של 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" } } }
אבחון
מאתרים את מדיניות 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 ואת הסיבה לכשל ברכיב ה-faultstring של תגובת השגיאה. לדוגמה, במחרוזת השגיאה הבאה, השם של 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 הבא מבצע חלוקה באפס, שתואמת למה שמופיע ב-faultstring:
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.