async def create_service_bus_status() -> (StatusEnum, str): status = StatusEnum.ok message = "" try: async with default_credentials() as credential: service_bus_client = ServiceBusClient( config.SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE, credential, retry_total=0) async with service_bus_client: receiver = service_bus_client.get_queue_receiver( queue_name=config. SERVICE_BUS_DEPLOYMENT_STATUS_UPDATE_QUEUE) async with receiver: pass except ServiceBusConnectionError: status = StatusEnum.not_ok message = strings.SERVICE_BUS_NOT_RESPONDING except: # noqa: E722 flake8 - no bare excepts status = StatusEnum.not_ok message = strings.UNSPECIFIED_ERROR return status, message
async def receive_message(): """ This method is an async generator which receives messages from service bus and yields those messages. If the yielded function return True the message is marked complete. """ async with default_credentials() as credential: service_bus_client = ServiceBusClient( config.SERVICE_BUS_FULLY_QUALIFIED_NAMESPACE, credential) async with service_bus_client: receiver = service_bus_client.get_queue_receiver( queue_name=config.SERVICE_BUS_DEPLOYMENT_STATUS_UPDATE_QUEUE) async with receiver: received_msgs = await receiver.receive_messages( max_message_count=10, max_wait_time=5) for msg in received_msgs: result = True message = "" try: message = json.loads(str(msg)) result = (yield parse_obj_as(DeploymentStatusUpdateMessage, message)) except (json.JSONDecodeError, ValidationError) as e: logging.error( f"{strings.DEPLOYMENT_STATUS_MESSAGE_FORMAT_INCORRECT}: {e}" ) if result: logging.info( f"Received deployment status update message with correlation ID {msg.correlation_id}: {message}" ) await receiver.complete_message(msg)