Beispiel #1
0
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)