故障排查 / 函数执行超时
函数执行超时可能有多种可能,需要根据不同情况进行辨别。
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. 参考文档