From 486b6db01ac6ce7fd138c350225683c271dbe038 Mon Sep 17 00:00:00 2001 From: Songbird Date: Fri, 14 Nov 2025 12:29:00 +0100 Subject: [PATCH] Add RabbitMQ healthcheck --- docker-compose.yml | 6 +++++ services/ingestion_dispatcher/Dockerfile | 2 +- services/ingestion_dispatcher/healthcheck.py | 26 ++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 services/ingestion_dispatcher/healthcheck.py diff --git a/docker-compose.yml b/docker-compose.yml index 7f66541..bae837e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -599,6 +599,12 @@ services: LOG_LEVEL: INFO networks: - fuzzforge-network + healthcheck: + test: ["CMD", "python", "healthcheck.py"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 10s restart: unless-stopped # ============================================================================ diff --git a/services/ingestion_dispatcher/Dockerfile b/services/ingestion_dispatcher/Dockerfile index 42cf2e9..2964505 100644 --- a/services/ingestion_dispatcher/Dockerfile +++ b/services/ingestion_dispatcher/Dockerfile @@ -6,6 +6,6 @@ WORKDIR /app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt -COPY app.py ./ +COPY app.py healthcheck.py ./ CMD ["python", "app.py"] diff --git a/services/ingestion_dispatcher/healthcheck.py b/services/ingestion_dispatcher/healthcheck.py new file mode 100644 index 0000000..6400a61 --- /dev/null +++ b/services/ingestion_dispatcher/healthcheck.py @@ -0,0 +1,26 @@ +"""Simple healthcheck to verify RabbitMQ connectivity.""" +from __future__ import annotations + +import os +import sys + +import pika + + +def main() -> int: + rabbit_url = os.getenv("RABBITMQ_URL", "amqp://ingest:ingest@rabbitmq:5672/") + try: + connection = pika.BlockingConnection(pika.URLParameters(rabbit_url)) + try: + channel = connection.channel() + channel.basic_qos(prefetch_count=1) + finally: + connection.close() + except Exception as exc: # pragma: no cover - run-time diagnostic + print(f"[healthcheck] RabbitMQ unavailable: {exc}", file=sys.stderr) + return 1 + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())