Azure 函数应用程序中的 Http 触发器

问题描述 投票:0回答:1

我有一个 Azure 函数应用程序为我的网站执行后台作业。有些工作是按需开始的。为了实现这一点,我使用一个 HTTP 触发器函数从 Web 服务器调用它,提供作业详细信息。该函数启动相应的编排并返回检查状态响应。

以简化形式,该启动器功能如下所示:

[FunctionName(nameof(StartJob))]
public async Task<HttpResponseMessage> StartJob(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req,
    [DurableClient] IDurableOrchestrationClient starter,
    ILogger log)
{
    HttpContent? content = req.Content ?? throw new Exception("Request body missing");
    string requestBody = await content.ReadAsStringAsync();

    dynamic jObject = JsonConvert.DeserializeObject(requestBody) ?? throw new Exception("No data");

    int requestId = (int)jObject.RequestId;

    // read the task description from DB
    var task = await ServerTaskHelper.GetTaskAsync(_connectionHelper, requestId);

    // start executing
    var oid = await starter.StartNewAsync(task.OrchestratorFunction);
    return starter.CreateCheckStatusResponse(req, oid);
}

在测试环境中运行良好,但在生产中,某些请求失败。不幸的是,我不知道响应代码:目前没有适当的日志记录。但我认为这可能是由于大量的请求。

我的问题:按需开始工作是一个好方法吗? Azure Function 应用可以处理多少个请求?也许最好将请求放入 Web 服务器上的队列中,并在 Azure 中创建队列触发器?

我的 Azure 应用程序的运行时版本是 4.28.4.4,针对 .NET 6.0,具有“进程内”模型。定价计划是“Premium v3 P1V3”。

提前谢谢您!

c# azure azure-functions
1个回答
0
投票

在某些情况下,按需求确实是按需求的正确方法。如果交易量很大并且需要 100% 的交易成功,那么队列是更好的方法。

此外,您正在使用持久功能,因此将会有一个存储帐户来存储该功能的状态,我要求您查看那些可能会识别问题的表格。

还要验证 Azure 功能始终打开是否已打开 Azure 功能(如何为 Azure 功能打开“始终打开”?

© www.soinside.com 2019 - 2024. All rights reserved.