Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure İşlevleri, Python uygulamalarınızı Azure'da yayımlamak için üç derleme seçeneğini destekler. Yerel ortamınıza, uygulama bağımlılıklarınıza ve çalışma zamanı gereksinimlerinize göre derleme yönteminizi seçin.
Derleme eylemleri için hızlı karşılaştırma
| Dağıtım türü | Bağımlılıkların yüklendiği yer | Tipik kullanım örneği |
|---|---|---|
| Uzak derleme (önerilir) | Azure (App Service) | Varsayılan, çoğu kullanıcı için önerilir |
| Yerel derleme | Makineniz | Linux/macOS geliştirmeleri, sınırlı Windows senaryoları |
| Özel bağımlılıklar | Ek dizin URL'si veya yerel yükleme yoluyla işlenir | PyPI olmayan bağımlılıklar |
Dağıtım paketinde dikkat edilmesi gerekenler
Python işlev uygulamanızı Azure'a dağıtırken şu paketleme gereksinimlerini göz önünde bulundurun:
- Klasör değil paket içeriği: Klasörün kendisini değil proje klasörünüzün içeriğini dağıtın.
-
Kök düzeyi
host.json: Birhost.jsondosyanın dağıtım paketinin kökünde ve bir alt klasörde iç içe olmadığından emin olun. -
Geliştirme dosyalarını dışla: , , ve
.venv*/gibi klasörleri.funcignoreiçerisine ekleyerek dağıtılan paketin dışında tutabilirsiniz. - Derleme ortamı üretim ortamıyla eşleşmelidir: Bağımlılıklarınız, üretim uygulamasıyla aynı python sürümünü kullanan bir ubuntu makinesinde derlenmelidir. Uzak derleme bu senaryoyu otomatik olarak işler.
-
Bağımlılıklar içine
./.python_packages/lib/site-packagesyüklenmelidir: Uzak derleme, içinderequirements.txtlistelenen tüm bağımlılıkları doğru dizine yükler. -
Dağıtım paketi boyutunu aklınızda bulundurun: Büyük bağımlılık kümeleri derleme süresini, soğuk başlatma gecikme süresini ve modül içeri aktarma ve başlatma süresini artırır. Büyük bilimsel veya ML kitaplıklarına (dahil
pytorch) sahip uygulamalar özellikle etkilenir. - Uzak derlemenin 60 saniyelik zaman aşımı var: Bağımlılık yüklemesi sınırı aşarsa derleme başarısız olur. Bu durumda yerel bir derleme kullanmayı ve önceden oluşturulmuş bağımlılıklarla dağıtmayı düşünün.
-
Modül içeri aktarmanın 2 dakikalık bir zaman sınırı vardır: Başlatma sırasında Python modülü yükleme ve işlev dizini oluşturma, Python 3.13 ve üzeri veya etkin olan eski Python sürümleri
PYTHON_ENABLE_INIT_INDEXINGiçin 2 dakikalık bir sınıra sahiptir. Uygulamanız bunu aşarsa üst düzey içeri aktarmaları azaltın veya gecikmeli içeri aktarmaları kullanın (modülleri genel kapsam yerine işlev gövdesi içinde içeri aktarın).
Uzaktan derleme
Uzaktan derleme, Python uygulamanızın İşlevler'e yalnızca kod dağıtımı için önerilen yaklaşımdır.
Uzaktan derleme ile İşlevler platformu paket yüklemesini işler ve uzak çalışma zamanı ortamıyla uyumluluğu sağlar. Uzak derlemenin kullanılması daha küçük bir dağıtım paketine de neden olur.
Şu araçları kullanarak Python uygulamanızı yayımlarken uzaktan derlemeyi kullanabilirsiniz:
-
Azure İşlevleri Temel Araçları: komut,
func azure functionapp publishPython uygulamalarını yayımlarken varsayılan olarak bir uzak derleme istemektedir. -
AZ CLI:
az functionapp deployment source config-zipPython uygulamalarını dağıtırken varsayılan olarak uzak derleme kullanır. - Visual Studio Code: Azure İşlevleri: Azure'a Dağıt... komutu her zaman uzak bir derleme kullanır.
-
GitHub Actions kullanarak sürekli teslim: Azure/functions-action@v1 eylemi, Esnek Tüketim planı için
remote-buildparametresitrueolarak ayarlandığında veya Ayrılmış planlar içinscm-do-build-during-deploymentveenable-oryx-buildparametreleritrueolarak ayarlandığında uzak derleme yapar.
Azure Pipelines ile sürekli teslim gibi diğer senaryolarda uzaktan derlemeyi etkinleştirmek için bkz. Uzaktan Derlemeyi Etkinleştirme.
Uzaktan derleme, uygulama ayarını kullanırken PIP_EXTRA_INDEX_URL özel paket dizinlerini de destekler. Daha fazla bilgi için Uzak derleme konusuna bakın.
Önemli
Uzaktan derleme, içinde requirements.txtlistelenen tüm bağımlılıkları yükler. Tüm gerekli paketlerin yüklendiğinden emin olmak için bu bağımlılıkları dosyanıza requirements.txt eklediğinizden emin olun.
Yerel derleme
Uzak derleme istemezseniz bağımlılıklar bunun yerine makinenize yüklenir. Ardından tüm yerel proje ve bağımlılıklar yerel olarak paketlenir ve işlev uygulamanıza dağıtılır. Yerel derlemenin kullanılması, daha büyük bir paket karşıya yükleme işlemine neden olur.
Ayrıca bağımlılıkları doğru dizine yüklemeniz gerekir. Gerekli bağımlılıkları yerel pip install --target="./.python_packages/lib/site-packages" klasörünüzde yüklemek için kullanın.python_packages/lib/site-packages.
Örneğin, bağımlılıklarınız bir requirements.txt dosyada listeleniyorsa şu komutu çalıştırabilirsiniz:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
Aşağıdaki durumlarda yerel derlemeyi kullanın:
- Linux veya macOS üzerinde yerel olarak geliştiriyorsun.
- Uzak derleme kullanılamıyor veya kısıtlanmış.
-
requirements.txtdışında,pyproject.tomlgibi bir dosyada bağımlılıkları tanımlamak istiyorsunuz.
Aşağıdaki araçlar yerel derlemeyi kullanacak şekilde yapılandırılabilir:
-
Azure İşlevleri Temel Araçları:
func azure functionapp publishbayrak--no-buildile kullanın. -
AZ CLI:
az functionapp deployment source config-zipbayrağıyla--build-remote=falsebirlikte. -
GitHub Actions kullanarak sürekli teslim: Esnek Tüketim planı için parametreyi
remote-buildvefalseolarak ayarlayın veya Ayrılmış planlar içinscm-do-build-during-deploymentveenable-oryx-buildparametrelerinifalseolarak ayarlayın.
Önemli
Python uygulamalarınızı bir Windows bilgisayarda geliştirirken yerel derleme kullanmayın. Bir Windows bilgisayarı üzerinde oluşturulan paketler genellikle Azure İşlevleri'nde Linux'a dağıtılırken ve linux üzerinde çalıştırılırken sorunlarla karşılaşır. Yerel derlemeyi yalnızca paketin Linux tabanlı sistemlerde çalıştığından eminseniz kullanın.
Özel bağımlılıklar
Azure İşlevleri, uygulama ayarını kullanarak PIP_EXTRA_INDEX_URL veya Linux veya macOS bilgisayarda yerel bir derleme oluşturarak özel ve PyPI olmayan diğer bağımlılıkları destekler.
Ek dizin URL'si kullanarak uzaktan derleme
Özel paketleriniz çevrimiçi kullanılabilir olduğunda, uygulama ayarını kullanarak PIP_EXTRA_INDEX_URL özel paket konumunu ayarladıktan sonra uzak derleme isteyebilirsiniz.
ayarladığınızda PIP_EXTRA_INDEX_URL, uzak derlemeler dağıtım sırasında bu paket akışını kullanır.
PIP_INDEX_URL paket dizininin yerini alır, bu nedenle beklenmeyen davranışı önlemek için bunun yerine kullanmayı PIP_EXTRA_INDEX_URL göz önünde bulundurun.
Yerel paketler veya tekerlekler
Python Azure İşlevi uygulamaları oluşturulurken yerel paketler ve tekerlekler desteklenir.
Bu paketleri veya tekerlekleri uzaktan derleme kullanarak yüklemek için, bağımlılıkları dosyanıza requirements.txt ekleyebilir ve uzak derleme etkin olarak dağıtabilirsiniz.
Örneğin, dosyanız requirements.txt aşağıdaki kod parçacığı gibi görünebilir:
# Installing a custom wheel
<my_package_wheel>.whl
# Installing a local package
path/to/my/package
Bu bağımlılıkları yerel derleme kullanarak yüklemek için, bağımlılıkları yerel .python_packages/lib/site-packages klasörünüzde yükleyin ve uzak derleme devre dışı bırakılarak dağıtın.
Örneğin, dosyanızda requirements.txt tanımlanmış paketler varsa, aşağıdaki komutları ve Çekirdek Araçları'nı kullanarak yükleyebilir ve yayımlayabilirsiniz:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build