#!/usr/bin/env python """ Main entry point, This module builds the producer from the submodules. """ import os import random import uuid import logging import sentry_sdk import time from communicator import Communicator from consumerlocator import ConsumerLocator from messagesender import MessageSender from redisconnector import RedisConnector __author__ = "@tormakris" __copyright__ = "Copyright 2020, GoldenPogácsa Team" __module_name__ = "app" __version__text__ = "1" sentry_sdk.init("https://3fa5ae886ba1489092ad49a93cb419c1@sentry.kmlabz.com/9") logging.basicConfig( level=logging.DEBUG, format='%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S', ) LOGGER = logging.getLogger(__name__) KNOWNCONSUMER = os.getenv("PRODUCER_KNOWNCONSUMER", '10.69.42.1') if __name__ == "__main__": """ This is the producers entry point, initializes all the components (:class:`communicator.Communicator`, :class:`consumerlocator.ConsumerLocator` and :class:`messagesender.MessageSender`) and sends infinite random messages. """ LOGGER.info("Producer started") generateduuid = str(uuid.uuid4()) communicator = Communicator(currentconsumer=KNOWNCONSUMER, uuid=generateduuid) LOGGER.debug(f"My uuid is {generateduuid}") consumerlocator = ConsumerLocator(uuid=generateduuid, communicator=communicator, redisconnector=RedisConnector()) messagesender = MessageSender(communicator=communicator) consumerlocator.learnconsumerlist() while True: LOGGER.info(f"Updating consumer list of {generateduuid}") consumerlocator.updateconsumer() LOGGER.info("Sending message to consumer") messagesender.sendmessage() time.sleep(random.random())