

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Lambda 受管執行個體的 Python 執行期
<a name="lambda-managed-instances-python-runtime"></a>

Lambda 執行時間使用多個 Python 程序來處理並行請求。每個並行請求會在單獨的程序中執行，具有自己的記憶體空間和初始化。每個程序一次可同步處理一個請求。程序不會直接共用記憶體，因此全域變數、模組層級快取和單頓物件會在並行請求之間隔離。

## 並行組態
<a name="lambda-managed-instances-python-concurrency-config"></a>

Lambda 傳送至每個執行環境的並行請求數目上限是由函數組態中的 `PerExecutionEnvironmentMaxConcurrency`設定所控制。這是選用設定，預設值會根據執行時間而有所不同。對於 Python 執行時間，預設值為每個 vCPU 16 個並行請求，或者您可以設定自己的值。此值也會決定 Python 執行時間所使用的程序數目。Lambda 會根據每個執行環境的容量，自動調整並行請求的數量，直到設定的最大值為止，以吸收這些請求。

**重要**  
使用程序型並行表示每個執行階段工作者程序都會執行自己的初始化。總記憶體用量等於每個程序的記憶體乘以並行程序的數量。如果您要載入大型程式庫或資料集並具有高並行性，則記憶體使用量會很大。根據您的工作負載，您可能需要調整 CPU-to-memory的比率，或使用較低的並行設定，以避免超過可用的記憶體。您可以使用 CloudWatch 中的 `MemoryUtilization` 指標來追蹤記憶體耗用量。

## 為多並行建置函數
<a name="lambda-managed-instances-python-building"></a>

由於程序型多並行模型，使用 Python 執行時間的 Lambda 受管執行個體函數不會同時從多個調用存取記憶體內資源。您不需要為記憶體內並行安全性套用編碼實務。

## 共用 /tmp 目錄
<a name="lambda-managed-instances-python-shared-tmp"></a>

`/tmp` 目錄會跨執行環境中的所有並行請求共用。同時寫入相同檔案可能會導致資料損毀，例如，如果另一個程序覆寫檔案。若要解決此問題，請實作共用檔案的檔案鎖定，或針對每個程序或每個請求使用唯一的檔案名稱，以避免衝突。請記得清除不需要的檔案，以避免耗盡可用空間。

## 日誌
<a name="lambda-managed-instances-python-logging"></a>

日誌交錯 （來自在日誌中交錯之不同請求的日誌項目） 在多並行系統中是正常的。

使用 Lambda 受管執行個體的函數一律使用[進階記錄控制](monitoring-logs.md#monitoring-cloudwatchlogs-advanced)所引進的結構化 JSON 日誌格式。此格式包含 `requestId`，允許日誌項目與單一請求相關聯。當您從 Lambda 中的 Python 標準程式庫使用`logging`模組時， `requestId` 會自動包含在每個日誌項目中。如需詳細資訊，請參閱[搭配 Python 使用 Lambda 進階記錄控制](https://docs.aws.amazon.com/lambda/latest/dg/python-logging.html#python-logging-advanced)。

## 請求內容
<a name="lambda-managed-instances-python-request-context"></a>

使用 `context.aws_request_id` 存取目前請求的請求 ID。

透過 Python 執行時間，您可以使用 `_X_AMZN_TRACE_ID`環境變數來存取具有 Lambda 受管執行個體的 X-Ray 追蹤 ID。使用 AWS SDK 時，會自動傳播 X-Ray 追蹤 ID。

使用 `context.get_remaining_time_in_millis()` 偵測逾時。如需詳細資訊，請參閱[錯誤處理和復原](lambda-managed-instances-execution-environment.md#lambda-managed-instances-error-handling)。

## 初始化和關閉
<a name="lambda-managed-instances-python-init-shutdown"></a>

每個程序會初始化一次函數。如果您的函數在初始化期間發出日誌，您可能會看到重複的日誌項目。

對於具有擴充功能的 Lambda 函數，執行環境會在關閉期間發出 SIGTERM 訊號。延伸項目使用此訊號來觸發清除任務，例如排清緩衝區。您可以訂閱 SIGTERM 事件來觸發函數清除任務，例如關閉資料庫連線。若要詳細了解執行環境生命週期，請參閱 [了解 Lambda 執行環境生命週期](lambda-runtime-environment.md)。

## 相依性版本
<a name="lambda-managed-instances-python-dependencies"></a>

Lambda 受管執行個體需要下列最低套件版本：
+ 適用於 AWS Lambda (Python) 的 Powertools：3.23.0 版或更新版本

## Lambda AWS 的 Powertools (Python)
<a name="lambda-managed-instances-python-powertools"></a>

Powertools for AWS Lambda (Python) 與 Lambda 受管執行個體相容，並提供用於記錄、追蹤、指標等的公用程式。如需詳細資訊，請參閱 [Powertools for AWS Lambda (Python)](https://github.com/aws-powertools/powertools-lambda-python)。

## 後續步驟
<a name="lambda-managed-instances-python-next-steps"></a>
+ 檢閱 [Lambda 受管執行個體的 Java 執行時間](lambda-managed-instances-java-runtime.md)
+ 檢閱 [Lambda 受管執行個體的 Node.js 執行時間](lambda-managed-instances-nodejs-runtime.md)
+ 檢閱 [Lambda 受管執行個體的 .NET 執行時間](lambda-managed-instances-dotnet-runtime.md)
+ 了解[擴展 Lambda 受管執行個體](lambda-managed-instances-scaling.md)