rewritten crap
This commit is contained in:
43
sender/ozon.py
Normal file
43
sender/ozon.py
Normal file
@@ -0,0 +1,43 @@
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from starlette.responses import JSONResponse
|
||||
|
||||
from sender.base import BaseStocksSender, SendStockStatus
|
||||
|
||||
|
||||
class OzonStocksSender(BaseStocksSender):
|
||||
@property
|
||||
def max_retries(self) -> int:
|
||||
return 5
|
||||
|
||||
@property
|
||||
def chunk_size(self) -> int:
|
||||
return 100
|
||||
|
||||
async def _process_chunk(self, chunk: list[dict]) -> SendStockStatus:
|
||||
response = await self.api.update_stocks(data=chunk)
|
||||
status_code = response.status
|
||||
if status_code == 200:
|
||||
return SendStockStatus.SUCCESS
|
||||
if response.content_type != JSONResponse.media_type:
|
||||
return SendStockStatus.ERROR
|
||||
json_data = await response.json()
|
||||
error_code = json_data.get('code')
|
||||
error_message = json_data.get('message')
|
||||
if error_code == 8:
|
||||
await asyncio.sleep(1)
|
||||
return SendStockStatus.SHOULD_RETRY
|
||||
logging.error(f'[{self.updater.marketplace.id}]: {error_message}')
|
||||
if status_code in [
|
||||
404,
|
||||
500,
|
||||
]:
|
||||
return SendStockStatus.SHOULD_RETRY
|
||||
return SendStockStatus.ERROR
|
||||
|
||||
async def after_chunk_processed(self):
|
||||
return await asyncio.sleep(80 / 100)
|
||||
|
||||
async def before_chunk_processed(self):
|
||||
pass
|
||||
Reference in New Issue
Block a user