Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Gen 1 Lama)
Halaman ini menjelaskan cara memecahkan masalah konflik dependensi saat menginstal paket PyPI kustom.
Masalah paling umum terkait paket PyPI yang mungkin Anda temui di Managed Airflow adalah konflik dependensi.
Saat Anda menentukan paket PyPI kustom baru untuk diinstal, paket ini atau versinya dapat menyebabkan konflik dependensi dengan paket PyPI kustom lainnya atau paket bawaan di lingkungan Anda. Dalam hal ini, operasi pembaruan lingkungan akan gagal dengan error.
Error build Cloud Build dan dalam cluster
Jika terjadi masalah dengan paket, Anda akan mendapatkan pesan error tentang masalah tersebut dalam dua cara, bergantung pada cara lingkungan Anda di-deploy:
Cloud Build. Pesan error dan link ke log Cloud Build. Contoh:
UPDATE operation on this environment failed 25 minutes ago with the following error message: Failed to install PyPI packages. Check the Cloud Build log at ...Build dalam cluster. Pesan error dan lokasi log build. Contoh:
UPDATE operation on this environment failed 17 minutes ago with the following error message: Failed to install PyPI packages. Check the in-cluster build logs for details. They can be found in the Environment logs under the build-log-* log name.
Melihat pesan error mendetail
Jika penginstalan paket gagal, pip akan melaporkan pesan error mendetail.
Anda dapat menemukan pesan error ini di log build.
Menemukan error pip di log Cloud Build
Anda dapat mengikuti link dari pesan error Cloud Build, atau menemukan log build:
Temukan log build:
Di Google Cloud konsol, buka halaman Histori build.
Pilih build yang gagal untuk melihat log-nya.
Di log build, temukan pesan error dari
pip. Contoh:ERROR: apache-airflow-backport-providers-google 2021.2.5 has requirement google-cloud-logging<3.0.0,>=2.1.1, but you'll have google-cloud-logging 1.15.0 which is incompatible.
Menemukan error pip di log build dalam cluster
Temukan log build:
Di Google Cloud konsol, buka halaman Environments.
Pilih lingkungan Anda.
Buka tab Logs.
Pilih All logs > Composer logs > Builds > Worker & Scheduler image.
Di menu drop-down Severity, pilih Info.
Di log yang ditampilkan:
Temukan pesan error
installer.sh. Contoh:The command '/bin/sh -c bash installer.sh $COMPOSER_PYTHON_VERSION fail' returned a non-zero code: 1Pesan info sebelumnya memiliki error
pipmendetail. Contoh:apache-airflow-backport-providers-google 2021.2.5 has requirement google-cloud-logging<3.0.0,>=2.1.1, but you have google-cloud-logging 1.15.0.
Waktu tunggu habis selama penginstalan paket Python
Pada versi terbaru, utilitas pip mengubah perilaku saat mencoba memenuhi dependensi. Jika dependensi yang ditentukan tidak dapat dipenuhi, pip akan memeriksa semua versi paket yang tersedia.
Saat Anda menginstal paket, hal berikut akan terjadi:
Jika paket sudah diinstal sebelumnya di lingkungan Anda dan dependensi Python yang Anda tentukan tidak memerlukan perubahan apa pun, paket akan tetap seperti semula.
Contoh:
aiodebug==2.3.0diinstal dan Anda menentukanaiodebugatauaiodebug>=2.Jika paket belum diinstal di lingkungan Anda atau tidak memenuhi dependensi Python yang Anda tentukan,
pipakan mencoba menggunakan versi terbaru yang memenuhi dependensi. Versi ini adalah versi paket terbaru jika Anda tidak menentukan versi, atau versi paket terbaru yang memenuhi batasan yang ditentukan.Contoh: Jika Anda menentukan
aiodebug, versi terbaru akan diinstal (2.*.*). Jika Anda menentukanaiodebug<2, 1.*.* akan diinstal.Jika versi ini menyebabkan konflik dependensi dengan paket bawaan,
pipakan memeriksa semua versi paket yang tersedia untuk mencoba memenuhi dependensi yang ditentukan. Jika hal ini terjadi, pesan berikut akan terlihat di log build:INFO: pip is looking at multiple versions of PYTHON_PACKAGE_NAME to determine which version is compatible with other requirements. This could take a while.Sebelum perubahan,
pipgagal dengan konflik dependensi tanpa memeriksa versi lain.
Memeriksa semua versi yang tersedia dapat memerlukan waktu yang cukup lama dan menyebabkan downgrade paket atau waktu tunggu habis selama penginstalan paket Python.
Paket bawaan di Managed Airflow diperbarui secara rutin ke versi terbaru karena alasan keamanan. Oleh karena itu, waktu tunggu habis juga dapat terjadi saat Anda mengupgrade lingkungan ke versi Managed Airflow yang lebih baru.
Kemungkinan solusi:
Perbarui dependensi Python kustom secara rutin.
Gunakan PythonVirtualenvOperator untuk mengisolasi cuplikan kode yang memerlukan paket yang saling bertentangan.
Konflik dengan paket PyPI bawaan
Beberapa konflik paket terjadi antara paket PyPI kustom yang Anda instal dan paket bawaan.
Anda dapat melihat daftar lengkap paket bawaan untuk versi Managed Airflow Anda di halaman Versi Managed Airflow.
Untuk mengatasi masalah ini, Anda dapat:
Menginstal versi paket PyPI kustom yang berbeda.
Menginstal versi paket bawaan yang berbeda. Untuk melakukannya, instal paket PyPI kustom dengan nama paket bawaan dan tentukan versi yang diperlukan. Sebaiknya jangan downgrade paket bawaan.
Lihat apakah versi Managed Airflow yang lebih baru menggunakan versi paket bawaan yang berbeda. Anda dapat memeriksa potensi konflik paket PyPI sebelum mengupgrade lingkungan ke versi Managed Airflow yang lebih baru.
Gunakan PythonVirtualenvOperator untuk mengisolasi cuplikan kode yang memerlukan paket yang saling bertentangan.
Server metadata tidak tersedia saat menginstal paket PyPI
Jika lingkungan Anda menggunakan file kustom pip.conf,
Anda mungkin akan menghadapi masalah saat tidak ada paket PyPI baru yang dapat diinstal di
lingkungan Anda. Di log Cloud Build yang terkait dengan error penginstalan paket, Anda dapat melihat pesan peringatan berikut:
WARNING: Compute Engine Metadata server unavailable on attempt 3 of 3. Reason:
timed out
WARNING: Authentication failed using Compute Engine authentication due to
unavailable metadata server.
Masalah ini disebabkan oleh file pip.conf yang tidak mengizinkan akses ke
indeks paket default
di https://pypi.org/simple. Misalnya, jika file pip.conf Anda hanya mengizinkan penginstalan paket dari repositori Artifact Registry kustom karena parameter index-url yang ditentukan ulang, penginstalan paket dari indeks paket default tidak akan tersedia.
Untuk mengatasi masalah ini, pastikan indeks paket https://pypi.org/simple ditambahkan ke file pip.conf Anda. Misalnya, jika indeks paket utama Anda
ditentukan dalam parameter index-url, tambahkan indeks https://pypi.org/simple
di parameter extra-index-url.