51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
import logging
|
|
from multiprocessing import Process
|
|
|
|
from pyinfra.utils.retry import retry
|
|
|
|
from pyinfra.config import CONFIG
|
|
from pyinfra.default_objects import ComponentFactory
|
|
from pyinfra.exceptions import ConsumerError
|
|
from pyinfra.flask import run_probing_webserver, set_up_probing_webserver
|
|
from pyinfra.utils.banner import show_banner
|
|
|
|
logger = logging.getLogger()
|
|
|
|
|
|
@retry(ConsumerError)
|
|
def consume():
|
|
try:
|
|
consumer = ComponentFactory(CONFIG).get_consumer()
|
|
consumer.basic_consume_and_publish()
|
|
except Exception as err:
|
|
logger.exception(err)
|
|
raise ConsumerError from err
|
|
|
|
|
|
def main():
|
|
show_banner()
|
|
|
|
webserver = Process(target=run_probing_webserver, args=(set_up_probing_webserver(),))
|
|
logging.info("Starting webserver...")
|
|
webserver.start()
|
|
|
|
try:
|
|
consume()
|
|
except KeyboardInterrupt:
|
|
pass
|
|
except ConsumerError:
|
|
webserver.terminate()
|
|
raise
|
|
|
|
webserver.join()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging_level = CONFIG.service.logging_level
|
|
logging.basicConfig(level=logging_level)
|
|
logging.getLogger("pika").setLevel(logging.ERROR)
|
|
logging.getLogger("flask").setLevel(logging.ERROR)
|
|
logging.getLogger("urllib3").setLevel(logging.ERROR)
|
|
|
|
main()
|