[英]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.