Condividi tramite


Modifiche e linee guida per Python 3.13+ in Funzioni di Azure

Questo articolo illustra importanti aggiornamenti delle funzionalità python introdotti da Funzioni di Azure a partire da Python 3.13. Queste modifiche includono la gestione delle versioni di runtime, i miglioramenti delle prestazioni e diverse funzionalità rimosse.

Controllo della versione del runtime Python

A partire da Python 3.13, Funzioni introduce il controllo della versione di runtime, una nuova funzionalità di consenso esplicito che consente di specificare versioni specifiche del runtime python di Funzioni usate dall'app.

Senza il controllo della versione abilitata, l'app continua a essere eseguita in una versione predefinita del runtime Python, gestita da Funzioni. È necessario modificare il file requirements.txt in modo da richiedere invece la versione rilasciata più recente, una versione non definitiva o per poter aggiungere l'app a una versione specifica del runtime Python.

È possibile abilitare il controllo della versione di runtime aggiungendo un riferimento al pacchetto di runtime Python al file requirements.txt , in cui il valore assegnato al pacchetto determina la versione di runtime usata.

Il riferimento specifico aggiunto in requirements.txt dipende dal modello di programmazione Python, che può essere uno di questi valori:

Versione del modello Nome del pacchetto
v2 azure-functions-runtime
v1 azure-functions-runtime-v1

Questa tabella indica il comportamento di controllo delle versioni in base al valore della versione di questa impostazione nel file requirements.txt :

Versione Esempio Comportamento
Nessun valore impostato azure-functions-runtime L'app Python 3.13+ viene eseguita nella versione più recente disponibile del runtime di Funzioni Python. Questa opzione è ideale per rimanere aggiornati con i miglioramenti e le funzionalità della piattaforma, poiché l'app riceve automaticamente gli aggiornamenti di runtime stabili più recenti.
Aggiunta a una versione specifica azure-functions-runtime==1.2.0 L'app Python 3.13+ rimane sulla versione di runtime bloccata e non riceve aggiornamenti automatici. È invece necessario aggiornare manualmente la versione aggiunta per sfruttare le nuove funzionalità, le correzioni e i miglioramenti del runtime. L'aggiunta è consigliata per i carichi di lavoro di produzione critici in cui la stabilità e la prevedibilità sono essenziali. L'aggiunta consente anche di testare la propria app su versioni di runtime non definitive durante lo sviluppo.
Nessun riferimento al pacchetto non disponibile Non impostando il azure-functions-runtime, l'app Python 3.13+ viene eseguita in una versione predefinita del runtime Python precedente rispetto alla versione più recente rilasciata. Gli aggiornamenti vengono eseguiti periodicamente da Funzioni. Questa opzione garantisce la stabilità e la compatibilità generale. Tuttavia, l'accesso alle funzionalità e alle correzioni più recenti viene ritardato fino a quando non viene aggiornata la versione predefinita.

Tenere presenti queste considerazioni quando si usa il controllo della versione di runtime con l'app Python 3.13+:

  • Evitare di vincolare qualsiasi app di produzione alle versioni di runtime preliminari (alpha, beta o dev).
  • Esaminare regolarmente le note sulla versione del runtime Python per tenere traccia delle modifiche apportate al runtime Python dell'app o determinare quando aggiornare una versione fissata.

Altre modifiche e miglioramenti introdotti in Python 3.13

Python 3.13 introduce diversi miglioramenti alle funzioni che migliorano le prestazioni e l'affidabilità e in caso contrario influiscono sui comportamenti di runtime:

Isolamento delle dipendenze ora abilitato per impostazione predefinita

Le tue app possono ora trarre vantaggio dal completo isolamento delle dipendenze, il che significa che quando l'app include una dipendenza utilizzata anche dal processo Python, come ad esempio azure-functions o grpcio, l'app può utilizzare la propria versione anche se il runtime Python utilizza una versione diversa internamente.

Questo isolamento impedisce conflitti di versione e migliora la compatibilità con i pacchetti personalizzati.

Miglioramento delle prestazioni di avvio a freddo

Python 3.13 offre una riduzione misurabile dell'ora di avvio a freddo rispetto a Python 3.11, che comporta un avvio più rapido delle app.

Gestione JSON più rapida con Orjson supporto

Funzioni supporta ora l'uso automatico di Orjson, una libreria JSON ad alte prestazioni scritta in Rust. Quando Orjson è incluso nelle dipendenze dell'app, il runtime lo usa automaticamente per la serializzazione e la deserializzazione JSON senza dover apportare modifiche al codice.

L'uso di Orjson può offrire una latenza inferiore e una maggiore capacità di throughput per carichi di lavoro intensivi in JSON, come chiamate API HTTP ed elaborazione di eventi. Per garantire la compatibilità con le versioni precedenti, la libreria standard json viene usata quando Orjson non è disponibile.

Consenso esplicito semplificato per lo streaming HTTP

  • La funzionalità Streaming HTTP è ora disponibile senza richiedere modifiche all'impostazione dell'app o ad altre configurazioni. Anche se è comunque necessario acconsentire esplicitamente a livello di funzione, non è più necessario aggiungere l'impostazione PYTHON_ENABLE_INIT_INDEXING per usare la funzionalità.

Supporto delle funzionalità rimosso in Python

Queste funzionalità non sono più supportate da Funzioni quando si usa Python 3.13 e versioni successive:

  • Estensioni del ruolo di lavoro: le estensioni del ruolo di lavoro personalizzate non sono compatibili con il runtime python 3.13+. Se l'app si basa su queste estensioni, è necessario rivalutare o eseguire la migrazione all'uso di alternative supportate.
  • Memoria condivisa: la funzionalità di memoria condivisa usata per l'ottimizzazione del payload di grandi dimensioni non è disponibile a partire da Python 3.13. Per impostazione predefinita, tutte le comunicazioni ora usano la messaggistica basata su gRPC.

Articolo correlato