Aracılığıyla paylaş


Python Azure İşlevleri uygulamalarınızı oluşturma

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: Bir host.json dosyanı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 .funcignore iç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çinde requirements.txt listelenen 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_INDEXING iç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 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.txt dışında, pyproject.toml gibi bir dosyada bağımlılıkları tanımlamak istiyorsunuz.

Aşağıdaki araçlar yerel derlemeyi kullanacak şekilde yapılandırılabilir:

Ö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