عیب یابی خطای زمان اجرا خط مشی PythonScript

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

ارزیابی اسکریپت ناموفق بود

کد خطا

steps.script.ScriptEvaluationFailed

متن پاسخ خطا

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

علل احتمالی

خط‌مشی اسکریپت پایتون می‌تواند انواع مختلفی از خطاهای ScriptEvaluationFailed را ایجاد کند. بخش‌های زیر برخی از این خطاها را شرح می‌دهند.

خطای نام

اگر در کد پایتون‌اسکریپت متغیری وجود داشته باشد که بدون تعریف شدن، به آن ارجاع داده شود یا روی آن عملیاتی انجام شود، با خطای 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. سیاست پایتون‌اسکریپت و نام متغیر تعریف نشده را از عنصر faultstring پاسخ خطا شناسایی کنید. برای مثال، در faultstring زیر، نام پایتون‌اسکریپت myscript.py و نام متغیر تعریف نشده num3 است:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
  2. فایل منبع پایتون‌اسکریپت شناسایی‌شده در مرحله ۱ بالا را بررسی کنید و تأیید کنید که آیا به متغیر تعریف‌نشده شناسایی‌شده در مرحله ۱ بالا ارجاع داده شده است یا خیر. برای مثال، کد پایتون‌اسکریپت زیر به متغیر تعریف‌نشده 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. بررسی کنید که آیا متغیر خاص در کد پایتون‌اسکریپت تعریف شده است یا خیر. اگر متغیر تعریف نشده باشد، دلیل خطا همین است.

    در اسکریپت نمونه‌ای که در بالا نشان داده شده است، متغیر num3 تعریف نشده است. بنابراین، خطای زیر را دریافت خواهید کرد:

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

وضوح تصویر

مطمئن شوید که تمام متغیرهای ارجاع‌شده در کد پایتون‌اسکریپت به درستی تعریف شده‌اند.

برای رفع مشکل مربوط به مثال پایتون‌اسکریپت نشان داده شده در بالا، قبل از استفاده از متغیر 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))

خطای تقسیم صفر

این خطا زمانی رخ می‌دهد که آرگومان دوم یک عملیات تقسیم یا مدول صفر باشد.

متن پاسخ خطا

{
    "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. نام سیاست پایتون‌اسکریپت و دلیل شکست را از عنصر faultstring پاسخ خطا شناسایی کنید. برای مثال، در faultstring زیر، نام پایتون‌اسکریپت 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. فایل منبع پایتون‌اسکریپت که در مرحله ۱ بالا مشخص شد را بررسی کنید و بررسی کنید که آیا عملیات تقسیم یا مدول بر صفر وجود دارد یا خیر. برای مثال، کد پایتون‌اسکریپت زیر تقسیم بر صفر را انجام می‌دهد که با آنچه در رشته خطا وجود دارد مطابقت دارد:

    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""

وضوح تصویر

مطمئن شوید که آرگومان دوم یک عملیات تقسیم یا مدول در پایتون‌اسکریپت غیر صفر باشد.

برای رفع مشکل با مثال پایتون‌اسکریپت نشان داده شده در بالا، از یک مقدار غیر صفر به عنوان آرگومان دوم یک عملیات تقسیم یا مدول استفاده کنید. به عنوان مثال:

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

اطلاعات بیشتر

جدا از مواردی که در بالا توضیح داده شد، دلایل احتمالی بسیار دیگری برای خطای steps.script.ScriptEvaluationFailed وجود دارد. لطفاً برای اطلاعات بیشتر به مستندات رسمی پایتون مراجعه کنید.