import json from contextlib import AsyncExitStack from typing import List import aiobotocore from aiobotocore.config import AioConfig from sentry_sdk import capture_exception import config sqs_client = None async def get_sqs_client(context_stack: AsyncExitStack): """Get SQS client. Args: context_stack: Context stack. Returns: SQS client. """ botocore_session = aiobotocore.get_session() boto_config = AioConfig(max_pool_connections=config.SQS_MAX_POOL_CONNECTIONS) global sqs_client sqs_client = await context_stack.enter_async_context( botocore_session.create_client("sqs", region_name=config.AWS_DEFAULT_REGION, config=boto_config) ) return sqs_client async def send_messages(messages: List[dict]): """Send SQS messages. Args: messages: List of message data. """ for entry in messages: try: await sqs_client.send_message( QueueUrl=config.IMAGE_CACHING_MESSAGE_QUEUE_URL, MessageBody=json.dumps(entry, default=str) ) except Exception as e: capture_exception(e)