Http触发器Azure函数随机返回404

时间:2020-06-11 13:39:45

标签: azure azure-functions http-status-code-404 serverless

我们在函数运行时3上具有一个.net核心azure函数。在本地运行的大多数情况下,此功能都可以很好地在我们部署的应用程序服务上运行。但是,对于在其他时间完全正常的请求,我们遇到了间歇性的404响应。

对于失败的请求,我们的日志或应用程序见解遥测中没有显示任何条目。

在azure-function-host github项目上感觉很像这个问题: https://github.com/Azure/azure-functions-host/issues/5247 尽管它的目标功能是运行时1或2。

任何人都有类似的问题或知道如何获取其他日志信息,这些信息可能会突出显示我们遇到的问题。

1 个答案:

答案 0 :(得分:0)

在横向扩展过程中或您的功能应用程序即将服务器从一台更改为另一台(由于某种原因)时,可能会发生这种情况。那就是无服务器应用程序的实际缺点。

但是我能建议您的是:

  • 创建类似于以下内容的HeartBeat函数:

    private readonly IAsyncRepository<Business> _businessAsyncRepository;
    
    public HeartBeat(IAsyncRepository<Business> businessAsyncRepository)
    {
        // Your all DI injections are here
        _businessAsyncRepository = businessAsyncRepository;
    }
    
    [FunctionName(nameof(HeartBeat))]
    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
        ILogger log)
    {
        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
        return new OkObjectResult("OK");
    }
    

然后在Application Insights上创建可用性测试,并致电HeartBeat。

enter image description here

这还将始终为您提供一个温暖的Azure Functions实例。但是很明显,每次您拨打心跳时,您都会花100万美元的免费通话用于消费计划,具体取决于您拨打AF的频率。