[Azure] Azure Functions V2에서 디폴트 타임 아웃치가 바뀌었으므로 주의(App Service 플랜 이용시 무제한→30분)
3686 단어 AzureAzureFunctionsFunctionApp
1.0과의 차이는 여기 라든지 여기 에 상세하게 쓰여져 있습니다.
이 중 Azure App Service 계획을 사용하는 경우 기본 시간 초과 값이 변경되었으므로 지금까지 V1에서 30분 이상 걸리는 일괄 처리를 실행한 경우에는 주의해야 합니다.
Azure Functions 실행 계획 및 제한 시간
Azure Functions는 두 가지 다른 호스팅 계획에서 실행할 수 있습니다.
종량 과금 플랜:
실행하는 함수의 부하에 따라 인스턴스가 자동으로 스케일되고, 과금은 실행 시간과 실행 횟수에 따라 이루어집니다. AWS Lambda와 동일한 실행 이미지입니다. Lambda는 지난 달(2018/10) 최대 실행 시간이 15분이 되었지만 Azure Functions에서는 기본 5분, 설정에 따라 10분까지 연장할 수 있습니다.
Azure App Service 플랜:
WebApp과 같은 다른 App Service 앱과 마찬가지로 Azure App Service 계획(전용 VM)에서 실행할 수 있습니다. 요금은 Azure App Service 계획의 크기와 실행 시간을 기준으로 합니다. 전용 VM이 할당되므로 설정에 따라 실행 시간을 무제한으로 설정할 수 있습니다.
이상이 설명입니다만, 텍스트에서는 조금 알기 어려우므로 표로 하면 이와 같이 됩니다.

이하, 적자의 곳의 설명입니다.
V2에서 시간 초과 값을 연장하려면
표에 기재된 바와 같이, 디폴트 타임 아웃치가 30분이 되어 있으므로, V1로 30분을 넘는 함수를 실행하고 있었을 경우, 같은 설정으로는 타임 아웃 해 버립니다.
2018-10-23T17:44:46.285 [Error] Timeout value of 00:30:00 exceeded by function 'Functions.testFunc' (Id: 'd58xxxxx-b3xx-49xx-aexx-4c91xxxxxxxx'). Initiating cancellation.
시간 초과 값을 연장하려면 host.json에 설명합니다. 포털에서 Function App을 선택 → Function App 설정 → host.json에서 설정할 수 있습니다.

기본적으로 "version": "2.0"만 설정되어 있으므로 "functionTimeout"값을 설정하고 Function App을 다시 시작하면 반영됩니다. 예는 10시간으로 하는 경우의 설정입니다.
{
"version": "2.0",
"functionTimeout": "10:00:00"
}
무제한으로 만드는 방법?
문서를 찾아도 V1과 같은 '무제한'으로 만드는 방법을 찾지 못했지만 테스트에서 다양한 설정을 시도했는데, 그러한 오류 메시지가 나왔습니다.
Error: 関数ランタイムを起動できません。 Microsoft.Azure.WebJobs.Script: FunctionTimeout must be greater than 00:00:01 and less than 10675199.02:48:05.4775807.
실 환경에서 그렇게 길게 하는 것은 없다고 생각합니다만, 이 메세지대로라면 .NET의 TimeSpan의 최대치(+10675199 02:48:05.4775807)까지 설정할 수 있다고 합니다.
참고 자료
표에 기재된 바와 같이, 디폴트 타임 아웃치가 30분이 되어 있으므로, V1로 30분을 넘는 함수를 실행하고 있었을 경우, 같은 설정으로는 타임 아웃 해 버립니다.
2018-10-23T17:44:46.285 [Error] Timeout value of 00:30:00 exceeded by function 'Functions.testFunc' (Id: 'd58xxxxx-b3xx-49xx-aexx-4c91xxxxxxxx'). Initiating cancellation.
시간 초과 값을 연장하려면 host.json에 설명합니다. 포털에서 Function App을 선택 → Function App 설정 → host.json에서 설정할 수 있습니다.

기본적으로 "version": "2.0"만 설정되어 있으므로 "functionTimeout"값을 설정하고 Function App을 다시 시작하면 반영됩니다. 예는 10시간으로 하는 경우의 설정입니다.
{
"version": "2.0",
"functionTimeout": "10:00:00"
}
무제한으로 만드는 방법?
문서를 찾아도 V1과 같은 '무제한'으로 만드는 방법을 찾지 못했지만 테스트에서 다양한 설정을 시도했는데, 그러한 오류 메시지가 나왔습니다.
Error: 関数ランタイムを起動できません。 Microsoft.Azure.WebJobs.Script: FunctionTimeout must be greater than 00:00:01 and less than 10675199.02:48:05.4775807.
실 환경에서 그렇게 길게 하는 것은 없다고 생각합니다만, 이 메세지대로라면 .NET의 TimeSpan의 최대치(+10675199 02:48:05.4775807)까지 설정할 수 있다고 합니다.
참고 자료
Azure Functions 2.0 소개
Reference
이 문제에 관하여([Azure] Azure Functions V2에서 디폴트 타임 아웃치가 바뀌었으므로 주의(App Service 플랜 이용시 무제한→30분)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/VA_nakatsu/items/bcf1f3a2f9ef3f978f29텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)