簡體   English   中英

AWS Lambda 函數未同時運行

[英]AWS Lambda function not running concurrently

我有一個從另一個函數調用的 AWS Lambda 函數。 第一個函數處理數據並在完成時調用另一個函數。 第二個函數將讓 n 個實例同時運行。

例如,第二個函數運行大約需要 5 秒(每次調用); 我希望這個函數在它們被調用時全部運行,總運行時間約為 5 秒。

該函數需要更長的時間,並且一次運行一個函數,直到前一個函數完成; 這個過程需要 5*n 秒。

AWS所述,我發現我可以在我所在的地區擴展該功能以運行多達 1,000 個。 我怎樣才能使它同時運行? 不需要代碼示例,只需要我可以研究解決問題的一般過程。

第一個函數頭看起來像這樣:(我還有其他代碼可以獲取我遺漏的 json_file)

def lambda_handler(event=None, context=None):

for n in range(len(json_file)):

    response = client.invoke(
        FunctionName='docker-selenium-lambda-prod-demo',
        InvocationType='RequestResponse',
        Payload=json.dumps(json_file[n])
        )

    responseJson = json.load(response['Payload'])

其中 json_file[n] 被發送到另一個函數來運行。

正如您在boto3 文檔中看到的關於調用函數的內容:

調用 Lambda 函數。 您可以同步調用函數(並等待響應),也可以異步調用。 要異步調用函數,請將 InvocationType 設置為 Event

如果您使用RequestResponse ,您的代碼將等到調用的 lambda 終止

您可以將InvocationType更改為Event或使用ThreadPoolExecutor類的東西並等待所有執行完成

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM