feat: enhance context handling and add options for redis locker

This commit is contained in:
2025-09-30 00:43:37 +03:00
parent ed7e7608fe
commit 328b4cc66e
4 changed files with 35 additions and 6 deletions

View File

@@ -128,6 +128,9 @@ func (r *apiRepository) GetProducts(ctx context.Context, marketplaceID int, req
// all offers
var allOffers []*pb.GetProductsResponse_Offer
defer func() {
if ctx.Err() != nil {
return
}
// store only if offers is 90% or more then requested
if len(allOffers) < int(float64(len(req.OfferIds))*0.9) {
return
@@ -243,10 +246,16 @@ func (r *apiRepository) CalculateProductTariffs(ctx context.Context, marketplace
offerChunks := lo.Chunk(req.Offers, defaultChunkSize)
maxRetries := 5
for chunkIndex, offerChunk := range offerChunks {
if ctx.Err() != nil {
return
}
fmt.Printf("Processing chunk %d/%d with %d offers\n", chunkIndex+1, len(offerChunks), len(offerChunk))
var globalError error = nil
for range maxRetries {
response, err := r.processTariffChunk(ctx, client, ymParameters, offerChunk, chunkIndex)
if ctx.Err() != nil {
return
}
if err != nil {
globalError = err
continue