gpt4 book ai didi

Azure Function 在应用程序服务计划中调用自身两次

转载 作者:行者123 更新时间:2023-12-02 06:46:17 24 4
gpt4 key购买 nike

我的 azure 函数中有以下代码,手动超时为 10 分钟。

using System.Net;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
try
{
TimeSpan ts = TimeSpan.FromMinutes(1);
for(int i=0;i<10;i++)
{
await Task.Delay(ts);
log.Info(String.Format("After 1 Min Delay {0}",i));
}
log.Info(String.Format("After 10 Min Delay "));
return req.CreateResponse(HttpStatusCode.OK);
}
catch (Exception e)
{
log.Info(String.Format("exception: {0}", e));
return req.CreateResponse(HttpStatusCode.BadRequest);
}
}

当我在 Azure 中运行上述函数时,我看到该函数在 3 分钟后创建了一个新实例。 (检查下面的日志)

2018-05-15T11:12:42  Welcome, you are now connected to log-streaming service.
2018-05-15T11:12:55.826 [Info] Function started (Id=f25e0bbd-7103-4823-b8f1-ef28888f7007)
2018-05-15T11:12:55.826 [Info] C# HTTP trigger function processed a request.
2018-05-15T11:13:55.844 [Info] After 1 Min Delay 0
2018-05-15T11:14:55.857 [Info] After 1 Min Delay 1
2018-05-15T11:15:55.862 [Info] After 1 Min Delay 2
2018-05-15T11:16:47.385 [Info] Function started (Id=7371ed94-9b62-40cc-bec0-00b8d5e0a250)
2018-05-15T11:16:47.385 [Info] C# HTTP trigger function processed a request.
2018-05-15T11:16:55.879 [Info] After 1 Min Delay 3
2018-05-15T11:17:47.395 [Info] After 1 Min Delay 0
2018-05-15T11:17:55.883 [Info] After 1 Min Delay 4
2018-05-15T11:18:47.400 [Info] After 1 Min Delay 1
2018-05-15T11:18:55.899 [Info] After 1 Min Delay 5
2018-05-15T11:19:47.411 [Info] After 1 Min Delay 2
2018-05-15T11:19:55.914 [Info] After 1 Min Delay 6
2018-05-15T11:20:47.413 [Info] After 1 Min Delay 3
2018-05-15T11:20:55.920 [Info] After 1 Min Delay 7
2018-05-15T11:21:47.416 [Info] After 1 Min Delay 4
2018-05-15T11:21:55.930 [Info] After 1 Min Delay 8
2018-05-15T11:22:47.436 [Info] After 1 Min Delay 5
2018-05-15T11:22:55.936 [Info] After 1 Min Delay 9
2018-05-15T11:22:55.936 [Info] After 10 Min Delay
2018-05-15T11:22:55.936 [Info] Function completed (Success, Id=f25e0bbd-7103-4823-b8f1-ef28888f7007, Duration=600105ms)
2018-05-15T11:23:47.447 [Info] After 1 Min Delay 6
2018-05-15T11:24:47.452 [Info] After 1 Min Delay 7
2018-05-15T11:25:47.467 [Info] After 1 Min Delay 8
2018-05-15T11:26:47.478 [Info] After 1 Min Delay 9
2018-05-15T11:26:47.478 [Info] After 10 Min Delay
2018-05-15T11:26:47.478 [Info] Function completed (Success, Id=7371ed94-9b62-40cc-bec0-00b8d5e0a250, Duration=600086ms)

在上面的日志中,您可以看到 azure 函数调用了两次,并且在完成执行后还给出了错误(500:内部服务器错误)。

最佳答案

是关于http请求超时和重试的。

当我直接在门户中运行该函数时,它将在近 4m 后再次调用,就像 @Sumit 和 @Joey 所看到的那样。我将Delay减少到10s,函数只触发一次,返回200。

尝试使用postman发送请求,这次函数只触发一次,响应消息如下。

enter image description here

正如我们在代码中看到的,直到 10m 进程完成才返回响应。它超出了超时设置,并且按照设计,门户发布的请求将在超时后重试。

更新

Azure function 是 Azure Web App 的一种,请参阅Azure Web App time out 230s setting

There is a 230 second (i.e. a little less than 4 mins) timeout for requests that are not sending any data back. After that, the client gets the 500 you saw, even though in reality the request is allowed to continue server side

关于Azure Function 在应用程序服务计划中调用自身两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50349161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com