عیب یابی خطای زمان اجرا خط مشی 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

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

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

    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 غیر از مواردی که در بالا توضیح داده شد وجود دارد. لطفاً برای اطلاعات بیشتر به اسناد رسمی پایتون مراجعه کنید.