fix: воркер ждет готовности rabbitmq, локально один процесс

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 <noreply@anthropic.com>
This commit is contained in:
protokeyandClaude Opus 5.5 committed 2026-10-01 08:28:11 +04:00
1 parent deaa5b04db
commit a90c265ff3
2 files changed
+13 -4

No files matched your search

+4 -2
View File
@@ -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 получают оба процесса
+9 -2
View File
@@ -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: