Azure

[Azure] Functions - Timeout value of 00:30:00 exceeded by function 'Functions.http_app_func'

비번변경 2024. 12. 24. 18:20

현상

2024.11.18-[Azure] 로컬 환경에서 Function 개발하기에서 정리했던 것처럼 로컬 환경에서 Azure Functions을 개발하면서 테스트를 진행하던 중 아래와 같은 에러가 발생했다.

Timeout value of 00:30:00 exceeded by function 'Functions.http_app_func'

타임 아웃이 발생해서 동작이 중단된 것 같은데, 일단 타임 아웃을 조정하는 방식으로 현상을 해결해보려고 한다.

 

 

host.json

host.json은 함수에 영향을 주는 구성 파일이다. https://learn.microsoft.com/ko-kr/azure/azure-functions/functions-host-json에서 예시 파일의 내용을 확인할 수 있다.

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    }
  },
  "extensions": {
    "http": {
        "routePrefix": ""
    }
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.*, 5.0.0)"
  },
}

 

 

functionTimeout

host.json에서 timeout과 관련된 설정은 여러 가지가 있는데, 그중에서도 function의 timeout은 functionTimeout으로 조정할 수 있다.

functionTimeout은 모든 Function에 대한 timeout에 영향을 주고, timespan 문자열 형식을 따른다. Function 유형에 따른 기본값과 최댓값은 아래와 같다.

플랜 유형  기본(분)  최대(분)
소비  5 10
프리미엄 30 -1(제한 없음)
전용(App Service) 30  -1(제한 없음)

참고로 -1을 사용하여 제한을 두지 않는 것은 권장하지 않는다고 한다. 하지만! 이 글에서는 제한을 두지 않도록 설정을 해보겠다.

 

 

functionTimeout 적용 예시

functionTimeout은 host.json 파일의 최상위 속성에 해당하므로 적당한 위치에 추가하면 된다.

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    }
  },
  "extensions": {
    "http": {
        "routePrefix": ""
    }
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.*, 5.0.0)"
  },
  "functionTimeout": "-1"
}

 

만약 functionTimeout을 00:00:10으로 설정하면 실행 후 10초가 지나면 타임아웃이 발생한다. 제한을 해제할 때는 시간 형식이 아닌 -1로 지정하면 되는 것 같다.

 

 

참고 문서

https://stackoverflow.com/questions/54863989/timeout-value-of-000500-was-exceeded-by-function-in-azure-functions

https://learn.microsoft.com/en-us/answers/questions/409040/timeout-value-of-00-30-00-exceeded-by-function