Pemecahan masalah error runtime kebijakan PythonScript

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat dokumentasi Apigee Edge.

ScriptEvaluationFailed

Kode error

steps.script.ScriptEvaluationFailed

Isi respons error

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

Kemungkinan penyebab

Kebijakan Python Script dapat menampilkan beberapa jenis error ScriptEvaluationFailed yang berbeda. Bagian di bawah menjelaskan beberapa error ini.

NameError

Jika ada variabel dalam kode PythonScript yang direferensikan atau dioperasikan tanpa ditentukan, Anda akan mendapatkan error Nama.

Isi respons error

{
    "fault": {
        "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "NameError: variable_name is not defined"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Contoh isi respons error

{
    "fault": {
        "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Diagnosis

  1. Identifikasi kebijakan PythonScript dan nama variabel yang tidak ditentukan dari elemen faultstring respons error. Misalnya, dalam faultstring berikut, nama PythonScript adalah myscript.py dan nama variabel yang tidak ditentukan adalah num3:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
  2. Periksa file sumber PythonScript yang diidentifikasi pada langkah #1 di atas dan pastikan apakah variabel yang tidak ditentukan yang diidentifikasi pada langkah #1 di atas sedang dirujuk. Misalnya, kode PythonScript berikut mereferensikan variabel yang tidak ditentukan num3, yang cocok dengan 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. Periksa apakah variabel tertentu ditentukan dalam kode PythonScript. Jika variabel tidak ditentukan, hal itu adalah penyebab error.

    Dalam contoh skrip yang ditampilkan di atas, variabel num3 tidak ditentukan. Oleh karena itu, Anda akan mendapatkan error di bawah ini:

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

Resolusi

Pastikan semua variabel yang dirujuk dalam kode PythonScript ditentukan dengan benar.

Untuk memperbaiki masalah pada contoh PythonScript yang ditampilkan di atas, tentukan variabel num3 sebelum menggunakannya. Contoh:

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

Error ini muncul saat argumen kedua dari operasi pembagian atau modulo adalah nol.

Isi respons error

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

Contoh isi respons error

{
    "fault": {
        "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Diagnosis

  1. Identifikasi nama kebijakan PythonScript dan alasan kegagalan dari elemen faultstring respons error. Misalnya, dalam faultstring berikut, nama PythonScript adalah myscript.py dan alasan kegagalannya adalah integer division or modulo by zero:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
  2. Periksa file sumber PythonScript yang diidentifikasi pada langkah #1 di atas dan verifikasi apakah ada operasi pembagian atau modulus dengan nol. Misalnya, kode PythonScript berikut melakukan pembagian dengan nol, yang cocok dengan yang ada di faultstring:

    a = 0
    b = 5
    c = b/a
    print c

    Dalam contoh skrip yang ditampilkan di atas, karena argumen kedua operasi pembagian adalah nol, Anda akan mendapatkan error berikut:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""

Resolusi

Pastikan argumen kedua operasi pembagian atau modulo bukan nol di PythonScript.

Untuk memperbaiki masalah pada contoh PythonScript yang ditampilkan di atas, gunakan nilai non-nol sebagai argumen kedua dari operasi pembagian atau modulus. Contoh:

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

Informasi Selengkapnya

Ada banyak kemungkinan penyebab lain untuk error steps.script.ScriptEvaluationFailed selain yang dijelaskan di atas. Lihat dokumentasi Python resmi untuk mengetahui informasi selengkapnya.