n8nで件数を増やす前に、ノードが複数itemを処理する動きと、一回に扱う件数を分けて確認します。すべてにLoopを追加するのではなく、外部APIの上限や順序の必要性から処理単位を選びます。
複数itemを渡すだけでよいノードもある
多くのn8nノードは、受け取った複数itemを処理します。一件の試験から十件へ増やす際に、まず入力と出力の件数を確認してください。ノードによって例外があるため、すべてが同じ動きだとは考えないようにします。
Loop Over Items(Split in Batches)は、入力を決めた件数ずつ後続へ渡すために使います。動作と例外は公式Loop Over Itemsで確認できます。
十件の試験から、一件ずつの処理を組む
- 架空のIDを十件用意し、Loop Over Itemsへ渡す。
- Batch Sizeを1にし、loop側へ一件を処理するノードをつなぐ。
- 外部APIへの間隔が必要なら、適切な待機を加えてループへ戻す。
- done側で、処理を終えた件数と失敗件数を確認する。
loop側とdone側を取り違えると、まとめて行いたい完了通知を一件ごとに送るなど、意図と違う動きになります。最初は外部送信を外し、IDの記録だけで順序を読みます。
待機時間は、対象APIの制限から決める
一律に1秒待てば安全、とは限りません。APIの制限が一秒単位か一分単位か、契約・ユーザー・IPのどこに適用されるかを確認します。他のworkflowも同じアカウントを使う場合、その呼び出し分も合計されます。
| 制約 | 考える対処 |
|---|---|
| 一定時間の呼び出し数 | 件数と待機を制限し、429の案内も確認する |
| 一回の本文サイズ | 一件の大きさも測り、件数だけで区切らない |
| 順序を守る更新 | 同じ対象IDの処理が重ならない構成にする |
途中で止まっても、最初から全部を送らない
処理済みID、失敗したID、結果不明のIDを残します。外部では成功したのに記録が間に合わなかった処理は、再送前に照合します。件数が多いほど、この区別が復旧時間へ効きます。
ループを繰り返す条件を自分で作る場合は、終了条件と上限も用意します。毎回同じ入力を初期化し直す構成では終わらないことがあります。十件で最後まで進むことを見た後、少しずつ件数を増やしてください。重複の扱いは二重実行の防止へ分担します。