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 स्क्रिप्ट नीति में कई तरह की 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"
        }
    }
}

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

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

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

    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 नीति के नाम का पता लगाएं. साथ ही, गड़बड़ी के रिस्पॉन्स में, गड़बड़ी वाले एलिमेंट की वजह से फ़ेल होने की वजह बताएं. उदाहरण के लिए, नीचे दी गई गड़बड़ी में 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. ऊपर दिए गए चरण #1 में पहचानी गई 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 दस्तावेज़ देखें.