コンテンツにスキップ

トラブルシューティング / 関数実行タイムアウト

関数実行タイムアウトにはさまざまな原因が考えられます。状況に応じて切り分ける必要があります。

1. DataFlux Func UI エディタで処理時間が長すぎる関数を実行する

システムを保護するため、DataFlux Func エディタで関数を実行する場合、システムは timeout 設定を無視し、時間制限は 60 秒 に固定されます。

関数の実行時間が時間制限を超えると、システムはプロセスを直接 Kill し、次のようなエラーをスローします:

Text Only
1
2
3
4
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 されます。

具体的には次のようになります:

  1. タスク実行のログで TaskTimeout を含むエラーが発生していることを確認できます。例:
Text Only
1
2
3
4
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
  1. 関数 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. 参考ドキュメント