Как победить многократное срабатывание кода в Django AppConfig.ready()?

Пытаюсь организовать одновременный старт с Django некоторого кода с помощью AppConfig.
( Функционал подписки на очереди rabbitmq )

import os

from django.apps import AppConfig


class CoreConfig(AppConfig):
    name = 'core'

    def ready(self):
        """ Not implemented logic here"""
        print(f'hi, {os.getpid()}')

Код запускается, но происходит это множество раз. Часть вызовов исполняют воркеры celery.

Лог из докера:

main-celery-worker      | hi, 7
celery-beater           | Waiting for postgresql...
celery-beater           | postgresql started
celery-beater           | celery beat v4.4.7 (cliffs) is starting.
celery-beater           | hi, 7
celery-beater           | hi, 7
backend_1               | hi, 7
main-celery-worker      | hi, 7
celery-beater           | hi, 7
backend_1               | hi, 7
main-celery-worker      | hi, 7
celery-beater           | hi, 7
backend_1               | hi, 7
main-celery-worker      | hi, 7

Конфигурация docker-compose.yml:

version: '3.7'

services:

  redis:
    image: 'redis:alpine'
    networks:
      - shared_network
  db:
    image: postgres:12.0-alpine
    ports:
      - "5432:5432"
    volumes:
      - ./postgres-data-dev:/var/lib/postgresql/data:z
    networks:
      - shared_network



  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile
    command: sh -c "cd /code/src &&
      python manage.py makemigrations &&
      python manage.py collectstatic --no-input &&
      python manage.py migrate &&
      python manage.py test --no-input &&
      gunicorn config.wsgi --bind 0.0.0.0:8000 --worker-class=gevent --timeout 620 --graceful-timeout=10 --workers=2 --threads=3"
    restart: on-failure
    volumes:
      - ./backend:/code
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev
    networks:
      - shared_network
    depends_on:
      - db

  celery-beat:
    build: backend/
    container_name: celery-beater
    hostname: celery-beat
    command: sh -c "cd /code/src && celery -A config beat --pidfile="
    restart: on-failure
    volumes:
      - ./backend:/code
    env_file:
      - ./.env
    depends_on:
      - db
      - redis
    networks:
      - shared_network

  main-celery-worker:
    build: backend/
    container_name: main-celery-worker
    hostname: main-worker
    command: sh -c "cd /code/src && celery -A config worker --loglevel=debug --concurrency=4"
    restart: on-failure
    volumes:
      - ./backend:/code
    env_file:
      - ./.env
    depends_on:
      - db
      - redis
    networks:
      - shared_network


networks:
  shared_network:
    driver: bridge


Ответы (0 шт):