72 lines
1.3 KiB
Python
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()
|