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

@@ -11,6 +11,7 @@ import (
wbapi "sipro-mps/pkg/api/wb/client"
"sipro-mps/pkg/utils"
"github.com/go-faster/errors"
"github.com/samber/lo"
)
@@ -61,6 +62,9 @@ func fetchProducts(
for {
response, err := client.ContentV2GetCardsListPost(ctx, &request, wbapi.ContentV2GetCardsListPostParams{Locale: wbapi.NewOptString("ru")})
if err != nil {
if errors.Is(err, context.Canceled) {
return
}
currentRetry++
if currentRetry >= maxRetries {
errChan <- fmt.Errorf("fetching product IDs: %w", err)
@@ -131,6 +135,9 @@ func (a apiRepository) StreamAllProductsCache(ctx context.Context, marketplaceId
go a.StreamAllProducts(ctx, marketplaceId, innerResultChan, innerErrChan)
var allProducts []pb.Product
defer func() {
if ctx.Err() != nil {
return
}
if len(allProducts) == 0 {
return
}
@@ -138,7 +145,6 @@ func (a apiRepository) StreamAllProductsCache(ctx context.Context, marketplaceId
Products: utils.ToPtrs(allProducts),
}
_ = redis.WriteProtoMessage(ctx, key, &message)
}()
for {
select {
@@ -157,6 +163,8 @@ func (a apiRepository) StreamAllProductsCache(ctx context.Context, marketplaceId
})
allProducts = append(allProducts, pbProducts...)
resultChan <- pbProducts
case <-ctx.Done():
return
}
}