Files
telecom-cdr-pipeline/src/core/worker/main.py

72 lines
1.3 KiB
Python

import logging
import signal
from core.config import get_settings
from core.worker.consumer import ProcessingWorker
from core.worker.metrics import WorkerMetrics
from core.worker.observability import WorkerObservabilityServer
from core.worker.stats import WorkerRuntimeStats
logging.basicConfig(
level=logging.INFO,
format=(
"%(asctime)s "
"%(levelname)s "
"%(name)s "
"%(message)s"
),
)
def main() -> None:
settings = get_settings()
metrics = WorkerMetrics()
stats = WorkerRuntimeStats()
worker = ProcessingWorker(
settings=settings,
metrics=metrics,
stats=stats,
)
observability = WorkerObservabilityServer(
settings=settings,
metrics=metrics,
stats=stats,
)
def handle_shutdown(
signum,
frame,
) -> None:
logging.getLogger(__name__).info(
"Shutdown signal received: %s",
signum,
)
worker.stop()
signal.signal(
signal.SIGINT,
handle_shutdown,
)
signal.signal(
signal.SIGTERM,
handle_shutdown,
)
observability.start()
try:
worker.run()
finally:
observability.stop()
if __name__ == "__main__":
main()