diff --git a/marketplaces/ozon.py b/marketplaces/ozon.py index 65cee9c..f59e758 100644 --- a/marketplaces/ozon.py +++ b/marketplaces/ozon.py @@ -45,6 +45,8 @@ class OzonMarketplaceApi(BaseMarketplaceApi): limiter = BatchLimiter() async def send_stock_chunk(chunk): + if not self.is_valid: + return try: await limiter.acquire_ozon(self.limiter_key) request_data = {'stocks': chunk} @@ -55,9 +57,11 @@ class OzonMarketplaceApi(BaseMarketplaceApi): if error_message: logging.warning( f'Error occurred when sending stocks to [{self.marketplace.id}]: {error_message} ({error_code})') + self.is_valid = False except Exception as e: logging.error( f'Exception occurred while sending stocks to marketplace ID [{self.marketplace.id}]: {str(e)}') + self.is_valid = False tasks = [send_stock_chunk(chunk) for chunk in chunks] await asyncio.gather(*tasks) diff --git a/marketplaces/wildberries.py b/marketplaces/wildberries.py index ac9d2b3..c4b80df 100644 --- a/marketplaces/wildberries.py +++ b/marketplaces/wildberries.py @@ -48,6 +48,8 @@ class WildberriesMarketplaceApi(BaseMarketplaceApi): limiter = BatchLimiter() async def send_stock_chunk(chunk): + if not self.is_valid: + return try: await limiter.acquire_wildberries(self.limiter_key) request_data = {'stocks': chunk} @@ -59,9 +61,11 @@ class WildberriesMarketplaceApi(BaseMarketplaceApi): error_code = response.get('code') logging.warning( f'Error occurred when sending stocks to [{self.marketplace.id}]: {error_message} ({error_code})') + self.is_valid = False except Exception as e: logging.error( f'Exception occurred while sending stocks to marketplace ID [{self.marketplace.id}]: {str(e)}') + self.is_valid = False tasks = [send_stock_chunk(chunk) for chunk in chunks] await asyncio.gather(*tasks) diff --git a/marketplaces/yandexmarket.py b/marketplaces/yandexmarket.py index 1cb81a2..84758d0 100644 --- a/marketplaces/yandexmarket.py +++ b/marketplaces/yandexmarket.py @@ -46,6 +46,8 @@ class YandexmarketMarketplaceApi(BaseMarketplaceApi): limiter = BatchLimiter() async def send_stock_chunk(chunk): + if not self.is_valid: + return try: await limiter.acquire_yandexmarket(self.limiter_key) request_data = { @@ -57,9 +59,11 @@ class YandexmarketMarketplaceApi(BaseMarketplaceApi): if response.status != 200: logging.warning( f'Error occurred when sending stocks to [{self.marketplace.id}]') + self.is_valid = False except Exception as e: logging.error( f'Exception occurred while sending stocks to marketplace ID [{self.marketplace.id}]: {str(e)}') + self.is_valid = False tasks = [send_stock_chunk(chunk) for chunk in chunks] await asyncio.gather(*tasks)