Große Datenmengen
Beim Arbeiten mit großen Datenmengen sind bestimmte Best Practices wichtig, um Performance zu optimieren und Timeouts zu vermeiden.
Timeouts erhöhen
Große Anfragen dauern länger. Stelle sicher, dass dein HTTP‑Client ein ausreichend hohes Timeout hat:
- Minimum: 30 Sekunden
- Empfohlen: 60 Sekunden oder höher
# Beispiel mit curl (60 Sekunden Timeout)
curl --max-time 60 "https://YOUR_SERVER-api.mail2many.de/api/v1/subscribers" \
--user 'mail2many:YOUR_API_KEY' \
-H "Content-Type: application/json" \
-H "Accept: application/json"
Daten laden (GET)
Verwende Paginierung beim Abrufen großer Datenmengen:
# Lade in Seiten statt alles auf einmal
for page in 1 2 3 4 5; do
curl "https://YOUR_SERVER-api.mail2many.de/api/v1/subscribers?page=$page&limit=100" \
--user 'mail2many:YOUR_API_KEY' \
-H "Content-Type: application/json" \
-H "Accept: application/json"
done
Empfehlter limit: 50–100 pro Anfrage
Daten erstellen/aktualisieren (POST/PUT)
Teile große Mengen in mehrere Anfragen auf. Verwende die upsert Route für Batch‑Operationen:
❌ Nicht empfohlen:
# Nicht 10.000 Einträge in einer Anfrage
curl -X POST "https://YOUR_SERVER-api.mail2many.de/api/v1/subscribers/upsert" \
--user 'mail2many:YOUR_API_KEY' \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"subscribers": [... 10000 items ...]}'
Auch nicht empfohlen ist es, 10.000 Empfänger einzeln zu aktualisieren:
# Nicht sinnvoll: 10.000 einzelne API-Calls
for subscriber in "${subscribers[@]}"; do
curl -X PUT "https://YOUR_SERVER-api.mail2many.de/api/v1/subscribers/$id" \
--user 'mail2many:YOUR_API_KEY' \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d "$subscriber"
done
✅ Empfohlen:
# 10 Anfragen mit je 1.000 Einträgen via upsert
for i in 1 2 3 4 5 6 7 8 9 10; do
curl -X POST "https://YOUR_SERVER-api.mail2many.de/api/v1/subscribers/upsert" \
--user 'mail2many:YOUR_API_KEY' \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"subscribers": [... 1000 items ...]}'
done
Ideal sind 500–2.000 Einträge pro Anfrage.
Request‑Frequenz optimieren
Nicht alle Anfragen müssen häufig stattfinden. Überprüfe deine Synchronisationshäufigkeit:
- Häufige Änderungen: Stündlich oder täglich
- Seltene Änderungen: Wöchentlich oder monatlich
- Einmalige Imports: Verteile über mehrere Tage
Weniger Anfragen = weniger Last auf deinem System und auf der API.
Parallelität begrenzen
Zusätzlich zum Request‑Rate‑Limit gilt ein Concurrent‑Limit: maximal 10 parallele Requests pro API-Key.
- Begrenze Worker/Threads auf einen festen Wert (z. B. 5–10)
- Nutze Queueing statt unbegrenzter Parallelität
- Reagiere bei
429mit kurzem Backoff und Retry
Details zu Headern und Reset‑Verhalten findest du unter Rate Limiting.
Filterung und Sortierung
Nutze Filter um nur relevante Daten zu laden:
# Lade nur Empfänger, die sich in den letzten 7 Tagen angemeldet haben
search=[{"createdAt":{"condition":">=","value":"2026-02-25 00:00:00"}}]
Das reduziert Datentransfer und Verarbeitungszeit.
Best Practices Zusammenfassung
- Timeout setzen: Min. 30–60 Sekunden
- Paginieren: 50–100 Einträge pro Seite
- Batch‑Größe: 500–2.000 Einträge pro Anfrage
- Häufigkeit: Nicht öfter als nötig
- Filtern: Nur benötigte Daten abrufen
- Fehlerbehandlung: Siehe Fehlertoleranz
Siehe auch die Paginierung‑Dokumentation für weitere Details.