本文概述 Azure Functions 從 Python 3.13 開始引進的重要 Python 功能更新。 這些變更包括運行時間版本管理、效能增強功能,以及數個已移除的功能。
Python 運行時間版本控制
從 Python 3.13 開始,Functions 引進運行時間版本控制,這是新的選擇加入功能,可讓您以應用程式所使用的特定 Functions Python 運行時間版本為目標。
若未啟用版本控制,您的應用程式會繼續在由 Functions 管理的 Python 運行時間預設版本上執行。 您必須修改 您的requirements.txt 檔案,以改為要求最新版本、發行前版本,或能夠將您的應用程式釘選到特定版本的 Python 運行時間。
您可以將 Python 執行時間套件的參考新增至 requirements.txt 檔案,以啟用運行時間版本控制,其中指派給封裝的值會決定使用的運行時間版本。
您在 requirements.txt 中新增的特定參考取決於您的 Python 程式設計模型,這可以是下列其中一個值:
| 模型版本 | 封裝名稱 |
|---|---|
| v2 | azure-functions-runtime |
| v1 | azure-functions-runtime-v1 |
下表根據 您requirements.txt 檔案中此設定的版本值,指出版本控制行為:
| 版本 | 範例 | 行為 |
|---|---|---|
| 未設定任何值 | azure-functions-runtime |
您的 Python 3.13+ 應用程式會在最新可用的 Functions Python 執行時間版本上執行。 此選項最適合使用平台改進和功能保持最新狀態,因為您的應用程式會自動收到最新的穩定運行時間更新。 |
| 釘選至特定版本 | azure-functions-runtime==1.2.0 |
您的 Python 3.13+ 應用程式會保留在固定的運行時間版本上,而且不會收到自動更新。 您必須改為手動更新已釘選的版本,以利用運行時間的新功能、修正和改進功能。 對於穩定性和可預測性至關重要的重要生產工作負載,建議釘選。 釘選也可讓您在開發期間,在預先發行的運行時間版本上測試您的應用程式。 |
| 沒有套件參考 | n/a | 如果未設定 azure-functions-runtime,您的 Python 3.13+ 應用程式會在最新發行版本後方的 Python 執行時間預設版本上執行。 函式會定期進行更新。 此選項可確保穩定性和廣泛的相容性。 不過,存取最新的功能和修正程式會延遲到更新預設版本為止。 |
搭配 Python 3.13+ 應用程式使用運行時間版本控制時,請記住這些考慮:
- 避免將任何生產應用程式釘選到發行前版本(Alpha、beta 或 dev) 執行時間版本。
- 定期檢閱 Python 運行時間版本資訊 ,以留意套用至您 app Python 運行時間的變更,或判斷何時更新釘選的版本。
Python 3.13 中導入的其他變更和改進
Python 3.13 引進數個可改善效能和可靠性的 Functions 增強功能,否則會影響運行時間行為:
相依性隔離現在預設會啟用
您的應用程式現在可以受益於完全 相依性隔離,這表示當您的應用程式包含 Python 背景工作角色也使用的相依性時,例如 azure-functions 或 grpcio,即使 Python 執行時間在內部使用不同的版本,您的應用程式也可以使用自己的版本。
此隔離可防止版本衝突,並改善與自定義套件的相容性。
改善冷啟動效能
相較於 Python 3.11,Python 3.13 可提供可測量的 冷啟動時間 減少,這可加快應用程式啟動速度。
支援更快速的 Orjson JSON 處理
Functions 現在支援自動使用 Orjson,這是以 Rust 撰寫的高效能 JSON 連結庫。 當 包含在您應用程式的相依性中時 Orjson ,運行時間會自動使用它進行 JSON 串行化和還原串行化,而不需要在程式碼中進行任何變更。
使用 Orjson 可為 JSON 繁重的工作負載提供較低的延遲和更高的輸送量,例如 HTTP API 呼叫和事件處理。 為了確保回溯相容性,當無法使用時Orjson,會使用標準json連結庫。
簡化 HTTP 串流選擇加入
-
HTTP 串流功能現在可供使用,而不需要對應用程式設定或其他組態進行任何變更。 雖然您仍然必須在函式層級選擇加入,但您不再需要新增
PYTHON_ENABLE_INIT_INDEXING設定以使用此功能。
Python 中已移除的功能支援
使用 Python 3.13 和更新版本時,Functions 不再支持這些功能:
- 背景工作延伸模組:自定義背景工作角色延伸模組與 Python 3.13+ 運行時間不相容。 如果您的應用程式依賴這些延伸模組,您必須重新評估或移轉至使用支援的替代方案。
- 共用記憶體:從 Python 3.13 開始,無法使用用於大型承載優化的共用記憶體功能。 根據預設,所有通訊現在都會使用 gRPC 型傳訊。