Omgaan met responslimieten van de gegevensexport-API
De gegevensexport-API voert geen paginering van de antwoorden uit. Indien een verzoek
meer gegevens zou opleveren dan de API in één enkel antwoord toestaat, mislukt het
verzoek met een foutmelding in plaats van dat er een gedeeltelijk resultaat wordt
teruggegeven. Plan uw integraties zodanig dat u binnen de limieten blijft door de
datumperiode te beperken, het aantal printers per verzoek te verminderen, of beide.
Wat de grenzen zijn
Er gelden twee soorten beperkingen voor verzoeken waarin een datumbereik is opgenomen:
- Maximale datumperiode
- Indien het tijdsbestek tussen
startDateTimeenendDateTimelanger is dan zeven dagen, retourneert de API een 400-antwoord met de foutcodeERR_DATE_RANGE_EXCEEDED. Verminder de omvang van het gevraagde tijdvenster en dien het verzoek opnieuw in. - Maximale grootte van het antwoord
- De maximaal ondersteunde grootte van een responsbestand is 6 MB, wat ruim voldoende
zou moeten zijn om de gegevens van bijna 10.000 taken te bevatten. Indien de gegevens
die overeenkomen met een verzoek de maximale responsgrootte zouden overschrijden,
retourneert de API een 413-respons met de foutcode
ERR_RESPONSE_LIMIT_EXCEEDED. De inhoud van het antwoord bevat eenmaxJobs-waarde die de geldende limiet aangeeft. Om het probleem op te lossen, kunt u de datumperiode beperken, minder printers aanvragen of beide, en de aanvraag vervolgens opnieuw indienen.
Verzoeken om binnen de gestelde grenzen te blijven
Om een integratie te ontwerpen die betrouwbaar binnen de responslimieten blijft, dient u rekening te houden met de volgende factoren:
- Aantal taken per printer. Een printer met hoge doorvoercapaciteit en continue invoer kan veel meer taken per uur verwerken dan een printer voor losse vellen met een laag volume. Als u beide typen in uw machinepark combineert, bepalen de printers met een hoog printvolume hoe kort uw tijdsvensters moeten zijn.
- Aantal printers per aanvraag. Elk verzoek kan meerdere
printerId-waarden bevatten. Het is handig om meerdere printers in één verzoek samen te voegen, maar elke extra printer vergroot de omvang van het antwoord en de kans dat de limiet wordt overschreden. - Tijdstip van de dag. Indien uw bedrijf in ploegen werkt, concentreren de taken en statuswijzigingen zich op bepaalde uren. Een periode van 24 uur kan zeer uiteenlopende volumes opleveren, afhankelijk van het tijdstip waarop die 24 uur beginnen en eindigen.
- Aantal toegestane herpogingen. Indien een verzoek mislukt met de foutcode
ERR_RESPONSE_LIMIT_EXCEEDED, dient uw integratie het verzoek op te splitsen en het opnieuw te proberen. Het ontwerpen met het oog op kleinere vensters is doorgaans minder complex dan het implementeren van dynamische verdeling.
Aanbevolen patronen
De volgende patronen zijn geschikt voor veelvoorkomende integratiescenario’s:
- Nachtelijk overzicht voor rapportage
- Voer één keer per dag een geplande taak uit waarbij de gegevens van de afgelopen 24 uur worden opgevraagd, printer voor printer. Dit patroon is eenvoudig te implementeren, kan bij een mislukking gemakkelijk opnieuw worden uitgevoerd en zorgt ervoor dat elk antwoord kort blijft. Verwerk de antwoorden per printer in uw vervolgproces.
- Uurlijkse gegevensopname voor dashboards die bijna in realtime werken
- Voer één keer per uur een geplande taak uit waarmee in één verzoek de gegevens van het voorgaande uur voor alle printers worden opgevraagd. Door het gebruik van uurvensterperioden blijven de responsgroottes beperkt, zelfs bij drukkers met een hoog drukvolume. Indien u over een groot wagenpark beschikt, verzoekt u erom de printers in groepen aan te vragen in plaats van allemaal tegelijk.
- Achteraf invoeren van historische gegevens
- Om een datawarehouse te vullen met historische gegevens, doorloopt u het tijdsbereik
in vensters van vaste grootte (bijvoorbeeld zes uur per verzoek) en uw printers in
kleine groepen. Verwerk één venster tegelijk en sla de resultaten op voordat u naar
het volgende venster gaat. Indien een venster de foutmelding
ERR_RESPONSE_LIMIT_EXCEEDEDweergeeft, verdeel dat venster dan in twee gelijke delen en probeer het opnieuw met beide delen. - Huidige status van de printer ten behoeve van de bewaking
- Om de huidige status van elke printer in uw printerpark te controleren zonder de geschiedenis
op te halen, roept u
/printer-statesaan metcurrentState=true. Het antwoord bevat één rij per motor en wordt niet beïnvloed door de datumperiode, zodat één enkel verzoek de gehele vloot kan omvatten.
Omgaan met fouten in verband met responslimieten in uw integratie
Wanneer u een 413-antwoord ontvangt met de foutcode ERR_RESPONSE_LIMIT_EXCEEDED, voer dan een of meer van de volgende handelingen uit voordat u het verzoek opnieuw
probeert:
- Verkort het tijdsvenster. Het venster in tweeën splitsen is een betrouwbare strategie; als het gehalveerde verzoek nog steeds mislukt, splitst u het opnieuw.
- Verminder het aantal
printerId-waarden in het verzoek. Indien één printer verantwoordelijk is voor het grootste deel van het printvolume, dient u die printer afzonderlijk aan te vragen. - Indien het verzoek betrekking heeft op een actueel momentopname in plaats van op een
historisch overzicht, gebruikt u
currentState=trueop/printer-statesom het door datumbereiken bepaalde volume volledig te vermijden.
Probeer hetzelfde verzoek niet opnieuw uit te voeren zonder de parameters te wijzigen. De API levert geen gedeeltelijke resultaten op, dus een herhalingspoging zonder aanpassingen zal opnieuw mislukken.