PythonScript नीति के रनटाइम में गड़बड़ी की समस्या हल करना

Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं.
info

पर क्लिक करें.

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 स्क्रिप्ट की नीति के उल्लंघन की वजह से, कई तरह की 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"
        }
    }
}

संक्रमण की जांच

  1. गड़बड़ी के जवाब के फ़ॉल्टस्ट्रिंग एलिमेंट से, PythonScript नीति और तय नहीं किए गए वैरिएबल के नाम की पहचान करें. उदाहरण के लिए, यहां दिए गए faultstring में, PythonScript का नाम myscript.py है और अपरिभाषित वैरिएबल का नाम num3 है:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
  2. ऊपर दिए गए पहले चरण में बताई गई PythonScript सोर्स फ़ाइल की जांच करें. साथ ही, यह पुष्टि करें कि ऊपर दिए गए पहले चरण में पहचाने गए अनडिफ़ाइंड वैरिएबल का रेफ़रंस दिया गया है या नहीं. उदाहरण के लिए, यहां दिया गया PythonScript कोड, num3 नाम के ऐसे वैरिएबल को रेफ़रंस देता है जिसे तय नहीं किया गया है. यह faultstring से मेल खाता है:

    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. गड़बड़ी के जवाब के faultstring एलिमेंट से, 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 सोर्स फ़ाइल की जांच करें. साथ ही, यह पुष्टि करें कि क्या इसमें शून्य से भाग देने या मॉडुलस ऑपरेशन किया गया है. उदाहरण के लिए, यहां दिया गया 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 का आधिकारिक दस्तावेज़ देखें.