This commit is contained in:
2024-07-06 04:19:14 +03:00
parent e90d2e72d2
commit cb3a02bb89
2 changed files with 19 additions and 3 deletions

View File

@@ -13,7 +13,13 @@ class OzonMarketplaceApi(BaseMarketplaceApi):
def __init__(self, marketplace: Marketplace): def __init__(self, marketplace: Marketplace):
self.marketplace = marketplace self.marketplace = marketplace
auth_data = json.loads(marketplace.auth_data) self.is_valid = True
try:
auth_data = json.loads(marketplace.auth_data)
except Exception:
logging.error(f"Couldn't load auth data for marketplace [{self.marketplace.id}]")
self.is_valid = False
return
client_id = auth_data.get('clientId') client_id = auth_data.get('clientId')
self.limiter_key = str(marketplace.company_id) + str(client_id) self.limiter_key = str(marketplace.company_id) + str(client_id)
@@ -32,6 +38,8 @@ class OzonMarketplaceApi(BaseMarketplaceApi):
async def update_stocks(self, data: Union[list, dict]): async def update_stocks(self, data: Union[list, dict]):
if type(data) is not list: if type(data) is not list:
return return
if not self.is_valid:
return
max_stocks = 100 max_stocks = 100
chunks = utils.chunk_list(data, max_stocks) chunks = utils.chunk_list(data, max_stocks)
limiter = BatchLimiter() limiter = BatchLimiter()
@@ -49,7 +57,7 @@ class OzonMarketplaceApi(BaseMarketplaceApi):
f'Error occurred when sending stocks to [{self.marketplace.id}]: {error_message} ({error_code})') f'Error occurred when sending stocks to [{self.marketplace.id}]: {error_message} ({error_code})')
except Exception as e: except Exception as e:
logging.error( logging.error(
f'Exception occurred while sending stocks to marketplace ID [{self.marketplace.id}]: {str(e)}') f'Exception occurred while sending stocks to marketplace ID [{self.marketplace.id}]: {str(e)}')
tasks = [send_stock_chunk(chunk) for chunk in chunks] tasks = [send_stock_chunk(chunk) for chunk in chunks]
await asyncio.gather(*tasks) await asyncio.gather(*tasks)

View File

@@ -13,7 +13,13 @@ from utils import chunk_list
class YandexmarketMarketplaceApi(BaseMarketplaceApi): class YandexmarketMarketplaceApi(BaseMarketplaceApi):
def __init__(self, marketplace: Marketplace): def __init__(self, marketplace: Marketplace):
self.marketplace = marketplace self.marketplace = marketplace
auth_data = json.loads(marketplace.auth_data) self.is_valid = True
try:
auth_data = json.loads(marketplace.auth_data)
except Exception:
logging.error(f"Couldn't load auth data for marketplace [{self.marketplace.id}]")
self.is_valid = False
return
access_token = auth_data.get('accessToken') access_token = auth_data.get('accessToken')
self.limiter_key = str(marketplace.company_id) + str(access_token) + str(self.marketplace.campaign_id) self.limiter_key = str(marketplace.company_id) + str(access_token) + str(self.marketplace.campaign_id)
@@ -32,6 +38,8 @@ class YandexmarketMarketplaceApi(BaseMarketplaceApi):
async def update_stocks(self, data: Union[list, dict]): async def update_stocks(self, data: Union[list, dict]):
if type(data) is not list: if type(data) is not list:
return return
if not self.is_valid:
return
campaign_id = self.marketplace.campaign_id campaign_id = self.marketplace.campaign_id
max_stocks = 2000 max_stocks = 2000
chunks = chunk_list(data, max_stocks) chunks = chunk_list(data, max_stocks)