O app pega todos os SKUs do catalogo, aproximadamente mais de 49k produtos, para cada produto precisamos buscar suas informações, o preço atual e enviar os dados para outra API.
Estou utilizando os events para processar os SKUs em chunks de 400 items, isso geraria 122 events aproximadamente.
import { MAX_ITEMS_PER_PAGE } from '../../../constants';
export async function example(ctx: Context) {
const {
clients: {
catalogClient,
},
} = ctx
const {
range: { total }
} = await catalogClient.getProductsAndSkus({
_from: 1,
_to: 1
})
const skuIds: number[] = []
const totalIterations = Math.ceil(total / MAX_ITEMS_PER_PAGE)
for (let i = 0; i < totalIterations; i++) {
const skus = await catalogClient.getAllSKUIDs({
page: i + 1,
pageSize: MAX_ITEMS_PER_PAGE
})
skuIds.push(...skus)
}
const chunkSize = 400; // Set the chunk size to 400
const numberOfChunks = Math.ceil(skuIds.length / chunkSize);
for (let i = 0; i < numberOfChunks; i++) {
const chunk = skuIds.slice(i * chunkSize, (i + 1) * chunkSize);
await ctx.clients.events.sendEvent('', 'process-skus', {
skuIds: chunk
})
}
ctx.status = 200
ctx.body = 'In progress'
}
Porém estou tendo problemas com algumas APIs da VTEX por causa do throttling (400 request por minuto).
Tem alguma app de exemplo?
Alguém já teve que implementar uma app backend no IO que precise trabalhar com muitos dados?