[英]What to do when Azure Function takes long time to complete?
我是 Azure 函數的新手,正在嘗試做一個新項目。 當我的 function 處理數據的時間過長時,我遇到了一些問題。 我正在使用 BlobTrigger,每次有人上傳新的 Blob 時,我都需要 Blob 中的數據來使用其他 Microsoft 服務分析某些內容。
這是我的 Azure Function 的代碼:
[StorageAccount("BlobConnectionString")]
public class AnalyzeAzureBlob
{
private readonly IAnalyzeResult analyzeResult;
public AnalyzeAzureBlob(IAnalyzeResult analyzeResult)
{
this.analyzeResult = analyzeResult;
}
[FunctionName("AnalyzeAzureBlob")]
public void Run(
[BlobTrigger("samples-analyze/{name}")]Stream inputBlob,
[Blob("analyzed/{name}", FileAccess.Write)] Stream outputBlob,
string name,
ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {inputBlob.Length} Bytes");
try
{
this.analyzeResult.AnalyzeData(inputBlob, outputBlob);
log.LogInformation("The file has been analyzed");
}
catch (Exception ex)
{
log.LogError("The analyze failed", ex);
Console.WriteLine(ex.ToString());
}
}
}
function 正常運行,但有時會超時,如果 blob 包含大量數據,則會失敗。 如何使用 Azure 函數避免超時並等待整個過程完成?
注意:我已閱讀有關 Azure 持久函數的信息,但很難理解如何在我的代碼中實現和使用它們。
如何使用 Azure 函數避免超時並等待整個過程完成?
正如您沒有提到 Azure Function 應用程序使用哪個托管計划。 但是,如果請求處理需要很長時間並給出超時異常,則更改為 Azure Function App 的高級或專用托管計划。
我已經閱讀了有關 Azure 持久函數的信息,但很難理解如何在我的代碼中實現它們並使用它們。
兩個功能 - 一個用於 Durable Function 中的 Orchestrator,另一個用於 Blob 觸發器,用於啟動/觸發運行持久協調器 function。
例如:
斑點觸發器:
[FunctionName("StartOrchestratorBlobTriggerFunction")]
public async Task StartOrchestratorBlobTriggerFunction(
[BlobTrigger("sample-workitems/{name}", Connection = "<Storage-Account-Name>")] Stream myBlob,
string name,
[OrchestrationClient] DurableOrchestrationClient durableOrchestrationClient,
ILogger log)
{
// Obtain your blob content, deserialize it if necessary, and provide it to the orchestrator rather than the stream as seen below.
await durableOrchestrationClient.StartNewAsync("YourNewDurableFunction", myBlob);
}
耐用 Function :
[FunctionName("YourDurableFunction")]
public async Task YourDurableFunction(
[OrchestrationTrigger] DurableOrchestrationContextBase orchestrationContext,
ILogger logger)
{
// here Calling the activity functions
}
function 應盡快完成,您應該將長任務邏輯放入由隊列消息觸發的不同解決方案中,因此 Azure ZC1C425268E68385D1AB5074C17A94F14 立即將消息排入隊列並完成。
我在這里有確切的用例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.