Bagikan melalui


Membangun aplikasi Python Azure Functions Anda

Azure Functions mendukung tiga opsi build untuk menerbitkan aplikasi Python Anda ke Azure. Pilih metode build Anda berdasarkan lingkungan lokal, dependensi aplikasi, dan persyaratan runtime Anda.

Perbandingan cepat untuk aksi kompilasi

Jenis penyebaran Di mana dependensi diinstal Kasus penggunaan umum
Build jarak jauh (disarankan) Azure (App Service) Default, direkomendasikan untuk sebagian besar pengguna
Build lokal Komputer Anda Dev Linux/macOS, skenario Windows terbatas
Dependensi kustom Ditangani melalui URL indeks tambahan atau penginstalan lokal Dependensi Non-PyPI

Pertimbangan paket penyebaran

Saat menyebarkan aplikasi fungsi Python Anda ke Azure, ingatlah persyaratan pengemasan ini:

  • Isi paket, bukan folder: Sebarkan konten folder proyek Anda, bukan folder itu sendiri.
  • Tingkat host.jsonakar : Pastikan satu host.json file berada di akar paket penyebaran, tidak ditumpuk dalam subfolder.
  • Mengecualikan file pengembangan: Anda dapat mengecualikan folder seperti tests/, .github/, dan .venv*/ dari paket yang disebarkan dengan menyertakannya di .funcignore.
  • Lingkungan build harus cocok dengan lingkungan produksi: Dependensi Anda harus dibangun pada komputer ubuntu menggunakan versi python yang sama dengan aplikasi produksi. Pembangunan jarak jauh menangani skenario ini secara otomatis.
  • Dependensi harus diinstal ke ./.python_packages/lib/site-packages dengan tepat: Pembangunan jarak jauh menginstal semua dependensi yang tercantum dalam requirements.txt ke dalam direktori yang benar.
  • Perhatikan ukuran paket penyebaran: kumpulan dependensi yang besar meningkatkan waktu build, latensi awal, dan waktu impor serta inisialisasi modul. Aplikasi dengan pustaka ilmiah atau ML besar (termasuk pytorch) sangat terpengaruh.
  • Build jarak jauh memiliki batas waktu 60 detik: Jika penginstalan dependensi melebihi batas, build gagal. Dalam hal ini, pertimbangkan untuk menggunakan build lokal dan mendistribusikan dengan dependensi bawaan.
  • Impor modul memiliki batas waktu 2 menit: Pemuatan modul Python dan pengindeksan fungsi selama startup memiliki batas 2 menit untuk Python 3.13 ke atas, atau untuk versi python yang lebih lama dengan PYTHON_ENABLE_INIT_INDEXING diaktifkan. Jika aplikasi Anda melebihi ini, kurangi impor tingkat atas atau gunakan impor malas (impor modul di dalam isi fungsi alih-alih pada cakupan global).

Build berbasis jarak jauh

Penyusunan jarak jauh adalah pendekatan yang direkomendasikan untuk penyebaran aplikasi Python Anda yang hanya berupa kode ke Functions.

Dengan pembangunan jarak jauh, Platform Fungsi menangani penginstalan paket dan memastikan kompatibilitas dengan lingkungan runtime jarak jauh. Menggunakan build jarak jauh juga menghasilkan paket penyebaran yang lebih kecil.

Anda dapat menggunakan build jarak jauh saat menerbitkan aplikasi Python menggunakan alat ini:

Untuk mengaktifkan build jarak jauh untuk skenario lain, seperti Pengiriman berkelanjutan dengan Azure Pipelines, lihat Mengaktifkan Build Jarak Jauh.

Build jarak jauh juga mendukung indeks paket kustom saat menggunakan PIP_EXTRA_INDEX_URL pengaturan aplikasi. Untuk informasi selengkapnya, lihat Pembangunan jarak jauh.

Penting

Pembangunan jarak jauh menginstal semua dependensi terdaftar dalam requirements.txt. Untuk memastikan semua paket yang diperlukan diinstal, pastikan untuk menyertakan dependensi tersebut dalam file Anda requirements.txt .

Build lokal

Jika Anda tidak meminta build yang dilakukan secara jarak jauh, maka dependensi akan diinstal pada komputer Anda. Seluruh proyek dan dependensi lokal kemudian dipaketkan secara lokal dan disebarkan ke aplikasi fungsi Anda. Menggunakan hasil build lokal menghasilkan unggahan paket yang lebih besar.

Anda juga perlu menginstal dependensi ke direktori yang benar. Gunakan pip install --target="./.python_packages/lib/site-packages" untuk menginstal dependensi yang diperlukan ke dalam folder lokal .python_packages/lib/site-packages Anda. Misalnya, jika Anda memiliki dependensi yang tercantum dalam requirements.txt file, Anda dapat menjalankan perintah ini:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt

Gunakan build lokal saat:

  • Anda mengembangkan secara lokal di Linux atau macOS.
  • Pembuatan jarak jauh tidak tersedia atau dibatasi.
  • Anda ingin menentukan dependensi dalam file selain requirements.txt, seperti pyproject.toml.

Alat berikut dapat dikonfigurasi untuk menggunakan build lokal:

Penting

Saat mengembangkan aplikasi Python Anda di komputer Windows, jangan gunakan build lokal. Paket yang dibangun di komputer Windows sering kali mengalami masalah saat didistribusikan dan dijalankan pada Linux dalam Azure Functions. Hanya gunakan build lokal jika Anda yakin paket berjalan pada sistem berbasis Linux.

Dependensi kustom

Azure Functions mendukung dependensi kustom dan non-PyPI lainnya dengan menggunakan PIP_EXTRA_INDEX_URL pengaturan aplikasi atau dengan membuat build lokal di komputer Linux atau macOS.

Pembangunan jarak jauh dengan URL indeks tambahan

Saat paket privat Anda tersedia secara online, Anda dapat meminta build jarak jauh setelah mengatur lokasi paket privat dengan menggunakan PIP_EXTRA_INDEX_URL pengaturan aplikasi. Saat Anda mengatur PIP_EXTRA_INDEX_URL, build jarak jauh gunakan umpan paket ini selama penyebaran. PIP_INDEX_URL menggantikan indeks paket, jadi pertimbangkan untuk menggunakan PIP_EXTRA_INDEX_URL sebagai gantinya untuk mencegah perilaku yang tidak terduga.

Paket atau roda lokal

Paket dan wheel lokal didukung saat membangun aplikasi Fungsi Azure Python.

Untuk menginstal paket atau roda ini menggunakan build jarak jauh, Anda dapat menyertakan dependensi dalam file Anda requirements.txt dan menyebarkan dengan build jarak jauh yang diaktifkan.

Misalnya, file Anda requirements.txt mungkin terlihat seperti cuplikan berikut:

 # Installing a custom wheel
 <my_package_wheel>.whl
 
 # Installing a local package
 path/to/my/package

Untuk menginstal dependensi ini menggunakan build lokal, instal dependensi ke folder lokal .python_packages/lib/site-packages Anda dan sebarkan dengan build jarak jauh yang dinonaktifkan. Misalnya, jika Anda memiliki paket yang ditentukan dalam requirements.txt file, Anda dapat menginstal dan menerbitkan menggunakan perintah berikut dan Core Tools:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build