From a90c265ff33d6e8bbf661aa0a7319f1b683710fe Mon Sep 17 00:00:00 2001 From: protokey Date: Thu, 1 Oct 2026 08:28:11 +0400 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B2=D0=BE=D1=80=D0=BA=D0=B5=D1=80=20?= =?UTF-8?q?=D0=B6=D0=B4=D0=B5=D1=82=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8=20rabbitmq,=20=D0=BB=D0=BE=D0=BA=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=20=D0=BE=D0=B4=D0=B8=D0=BD=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit healthcheck rabbitmq по check_port_connectivity: web и worker стартуют после service_healthy, make dev поднимает сервисы с --wait. Иначе docker-proxy принимает TCP до старта брокера и pika спамит IncompatibleProtocolError. dj_worker: --processes 1 --threads 1 вместо процесса на каждое ядро. Co-Authored-By: Claude Opus 5.5 --- Makefile | 6 ++++-- docker-compose.yaml | 11 +++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 652ea49..170f43e 100644 --- a/Makefile +++ b/Makefile @@ -91,8 +91,9 @@ dj_run: dj_test: $(MANAGE) test --settings=MyPointVPN.settings.test +# по умолчанию dramatiq берет процессы по числу ядер: для разработки хватает одного потока dj_worker: - $(MANAGE) rundramatiq + $(MANAGE) rundramatiq --processes 1 --threads 1 # секреты в .env: дописывает только отсутствующие и пустые, FIELD_ENCRYPTION_KEYS не перезаписывает dj_secrets: @@ -123,7 +124,8 @@ docker_up: DEV_SERVICES := postgres rabbitmq telegram telegram-files dev: - docker compose up -d $(DEV_SERVICES) + @# --wait: rabbitmq до healthy, иначе воркер стучится в еще не открытый порт + docker compose up -d --wait $(DEV_SERVICES) @until docker compose exec -T postgres pg_isready -q; do sleep 1; done $(MANAGE) migrate --noinput @# Ctrl+C получают оба процесса diff --git a/docker-compose.yaml b/docker-compose.yaml index 91a6ced..51a699b 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -61,6 +61,13 @@ services: - "127.0.0.1:15672:15672" volumes: - rabbitmq_data:/var/lib/rabbitmq + # docker-proxy принимает TCP еще до старта брокера и сразу рвет соединение: ждем, когда AMQP-порт реально слушается + healthcheck: + test: [ "CMD", "rabbitmq-diagnostics", "-q", "check_port_connectivity" ] + interval: 30s + timeout: 10s + start_period: 60s + start_interval: 1s postgres: image: docker.local/postgres:16.15-alpine3.23 @@ -108,7 +115,7 @@ services: migrate: condition: service_completed_successfully rabbitmq: - condition: service_started + condition: service_healthy telegram: condition: service_started telegram-files: @@ -125,7 +132,7 @@ services: migrate: condition: service_completed_successfully rabbitmq: - condition: service_started + condition: service_healthy volumes: telegram-bot-api-data: