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

अगर 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. गड़बड़ी के जवाब के faultstring एलिमेंट से, PythonScript नीति और बिना तय किए गए वैरिएबल का नाम पहचानें. उदाहरण के लिए, नीचे दी गई गड़बड़ी में, PythonScript का नाम myscript.py है और वैरिएबल का नाम तय नहीं है num3:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
  2. ऊपर दिए गए पहले चरण में पहचानी गई PythonScript सोर्स फ़ाइल की जांच करें और पुष्टि करें कि ऊपर दिए गए पहले चरण में पहचाने गए, बिना वैल्यू वाले वैरिएबल का रेफ़रंस दिया जा रहा है या नहीं. उदाहरण के लिए, नीचे दिया गया 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))
  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 नीति के नाम के साथ-साथ, गड़बड़ी के रिस्पॉन्स के errorstring एलिमेंट से फ़ेल होने की वजह बताएं. उदाहरण के लिए, नीचे दी गई गलती में, 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 का आधिकारिक दस्तावेज़ देखें.