문제 해결 / 함수 실행 시간 초과
함수 실행 시간 초과는 여러 가지 원인이 있을 수 있으며, 상황에 따라 구분하여 확인해야 합니다.
1. DataFlux Func UI 편집기에서 실행 시간이 너무 오래 걸리는 함수 실행
시스템을 보호하기 위해 DataFlux Func 편집기에서 함수를 실행할 경우 시스템은 timeout 설정을 무시하며 시간 제한은 60초로 고정됩니다.
함수 실행 시간이 시간 제한을 초과하면 시스템이 프로세스를 직접 Kill하고 다음과 유사한 오류를 발생시킵니다.
| Text Only |
|---|
| Traceback (most recent call last **IN USER SCRIPT**):
File "demo__test_timeout", line 5, in test_timeout
time.sleep(100)
worker.tasks.TaskTimeout: Task execution has taken too much time and has been killed by force
|
| 가능한 원인 |
해결 방법 |
| 실행한 함수가 60초 제한을 초과함 |
편집기에서 함수를 실행하는 것은 주로 개발/디버깅에 사용되므로 더 작은 데이터 세트 및 요청량을 사용해야 합니다. 전체 장시간 작업을 직접 실행하지 마십시오. |
2. 함수 실행 시간이 너무 오래 걸려 작업 프로세스가 Kill됨
시스템을 보호하기 위해 DataFlux Func는 함수 실행 시간의 최대 길이를 제한하며, 무제한으로 실행되도록 허용하지 않습니다.
일정 시간이 지나면 실행 프로세스를 직접 Kill합니다.
구체적인 증상은 다음과 같습니다.
- 작업 실행 로그에서
TaskTimeout이 포함된 오류가 발생하는 것을 확인할 수 있습니다. 예:
| Text Only |
|---|
| Traceback (most recent call last **IN USER SCRIPT**):
File "demo__test_timeout", line 5, in test_timeout
time.sleep(100)
worker.tasks.TaskTimeout: Task execution has taken too much time and has been killed by force
|
- 함수 API를 호출하면 상태 코드
599가 반환되고, EFuncTimeout(일반적으로 TaskTimeout 정보도 포함)이 포함된 다음과 같은 데이터가 반환됩니다.
| JSON |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 | {
"ok" : false,
"error" : 599.2,
"status" : 599,
"reason" : "EFuncTimeout",
"message": "Func task timeout",
"detail": {
"name" : "Func.Runner",
"id" : "task-xxxxx",
"triggerTime" : 1755596408.972,
"startTime" : 1755596408.974,
"endTime" : 1755596411.979,
"status" : "timeout",
"exceptionType" : "TaskTimeout",
"exception" : "TaskTimeout('Task execution has taken too much time and has been killed by force')",
"exceptionFrom" : "worker",
"originExceptionType": "TaskTimeout",
"originException" : "TaskTimeout('Task execution has taken too much time and has been killed by force')"
},
"reqDump": {
"method": "GET",
"url" : "http://localdev:8089/api/v1/func-api/demo__test_timeout.test_timeout.xxxxx/s"
},
"traceId" : "TRACE-XXXXX",
"clientTime": null,
"reqTime" : "2025-08-19T09:40:08.967Z",
"respTime" : "2025-08-19T09:40:12.140Z",
"reqCost" : 3173
}
|
여기서 reqCost 필드는 이 함수가 실행을 시작한 후 Kill될 때까지 경과한 시간(밀리초)입니다.
가능한 원인 및 해결 방법:
| 가능한 원인 |
해결 방법 |
실행한 함수가 timeout 시간 초과 매개변수를 지정하지 않았지만 기본 시간 초과 제한을 초과하여 실행됨 |
함수 개발자에게 연락하여 오류를 조사하십시오. 여기에는 다음 사항이 포함되지만 이에 국한되지는 않습니다: 시간 초과 매개변수 설정이 너무 짧음 함수 내부에서 외부 시스템을 호출할 때 응답이 너무 느림 |
실행한 함수가 timeout 시간 초과 매개변수(초)를 지정했고 함수 실행이 시간 초과됨 |
위와 동일 |
함수 시간 초과 기본값은 30초이며, 최대 설정은 3600초입니다.
X. 참고 문서