トラブルシューティング / 関数実行タイムアウト
関数実行タイムアウトにはさまざまな原因が考えられます。状況に応じて切り分ける必要があります。
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. 参考ドキュメント