pyinfra/src/serve.py

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()