Loop ve Array İşlemleri
Çoklu kayıtla çalışmak: Split In Batches, Loop Over Items, array operasyonları ve performans ipuçları.
Bu bölümde
Gerçek otomasyonlarda nadiren tek bir kayıtla çalışırsınız — 500 lead, 1.000 ürün, 10.000 e-posta. Bu bölümde n8n'in 'item-based' çalışma mantığını, büyük listeleri batch'lere bölmeyi (Loop Over Items / Split In Batches), API quotalarına saygıyı ve bellek dostu pattern'leri öğreneceksiniz.
Konular
- Item-based çalışma mantığı
- Split In Batches: büyük listeleri bölme
- Loop Over Items vs Function Item
- Aggregate / Item Lists node'ları
- Rate limiting ve API quotalarına saygı
- Memory ve performans yönetimi
n8n'in item-based çalışma mantığı
n8n bir veri öğesini değil, 'items' dizisini taşır. Her node 'her item için bir kez' çalışır — yani bir HTTP Request node'una 100 item gelirse 100 istek atılır, otomatik olarak. Bu çoğu zaman istediğiniz şeydir. Ama bazı durumlarda, özellikle hız limiti olan API'lerde, hepsini aynı anda göndermek yerine kontrollü bir akış istersiniz. İşte Loop Over Items burada devreye girer.
Loop Over Items (Split In Batches)
Loop Over Items (eski adı Split In Batches), gelen item dizisini sizin belirlediğiniz boyutta parçalara böler ve bağlı node'ları her parça için sırayla çalıştırır. 'Batch Size' parametresi en kritik ayardır: 1 yazarsanız tek tek işler (en yavaş, en güvenli); 10 yazarsanız 10'arlı gruplar halinde işler. Loop'un sonunda iki çıkış olur — 'loop' (sıradaki batch'e dön) ve 'done' (tüm batch'ler bitince devam et). Loop body'sinin sonunu Loop'un kendisine geri bağlamayı unutmayın; en sık yapılan hata budur.
Loop + Wait: rate limiting
Çoğu API saniye/dakika başına istek sınırı koyar (örn. OpenAI dakikada 60 istek). Loop Over Items'ı Batch Size: 10 + Wait node (5 saniye) ile birleştirirseniz dakikada ~120 istek atarsınız — limitin altında, güvenli. Quota aşılırsa 429 hatası alırsınız ve sonraki istekler reddedilir. 'Continue On Fail' + retry stratejisi de eklediğinizde sistem aşırı yüklenmeden ilerler.
Aggregate ve Item Lists node'ları
Loop'un karşıtı: birden çok item'ı tek bir item'a toplamak. Aggregate node tüm item'ları tek bir dizi alanı altında birleştirir — örneğin 100 sipariş item'ını bir e-posta gövdesinde tek liste olarak göstermek için. Item Lists node ise sıralama (sort), filtreleme (filter), tekilleştirme (remove duplicates), grup (group by) gibi liste operasyonları için kullanılır. Bu iki node, özellikle rapor/özet üreten akışlarda işinizi çok kolaylaştırır.
Pagination: büyük API yanıtlarını sayfalama
API'lerin çoğu tek seferde 100-500 kayıttan fazlasını dönmez — kalanını almak için sayfalama (pagination) yaparsınız. HTTP Request node'unun 'Pagination' seçeneği bu işi otomatikleştirir: Mode olarak 'Update a Parameter in Each Request' seçip page veya cursor parametresini sonraki sayfaya nasıl ilerleteceğini tanımlarsınız. Maksimum sayfa sayısı veya 'while' koşulu ile çıkışı kontrol etmeyi unutmayın — sonsuz döngüden kurtaran tek şey budur.
Bellek ve performans
n8n bir workflow'un tüm node çıktılarını çalıştırma süresince bellekte tutar. 100.000 item'lı bir akış 1-2 GB RAM yiyebilir. Pratik ipuçları: Loop Over Items kullanın (her batch'ten sonra önceki batch'in verisi atılır), gereksiz büyük alanları erkenden Set ile düşürün, binary veri (PDF, görsel) ile çalışırken her item'da sadece gerektiğinde binary'yi taşıyın. Üretimde ağır akışları sub-workflow'a (Execute Workflow) bölmek de bellek baskısını azaltır.
Bu bölümün workflow'u (n8n editör görünümü)