Как установить celery beat в docker?

в settings.py

CELERY_TIMEZONE = 'Europe/Minsk'
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = 30 * 60
CELERY_BROKER_URL = os.environ.get('CELERY_BROKER_URL')
CELERY_RESULT_BACKEND = os.environ.get('CELERY_BROKER_URL')

CELERY_BROKER_URL = redis://redis:6379

config/celery.py:

import os

from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')

app = Celery('config')

app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()

app.conf.beat_schedule = {
    'pulling-games-to-database': {
        'task': 'gamehub.tasks.pull_games',
        'schedule': 604800.0,
    }
}

docker-compose.yml

version: '3'


services:
  db:
    build:
      context: ./docker/postgres
      dockerfile: Dockerfile
    env_file:
      - ./.env.db
    volumes:
      - ./docker/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
    restart: always
    ports:
      - '5432:5432'

  redis:
    image: redis
    ports:
      - '6379:6379'

  celery:
    build: .
    command: celery -A config worker -l info
    volumes:
      - .:/code
    depends_on:
      - db
      - redis

  celery-beat:
    build: .
    command: celery -A config beat -l info
    volumes:
      - .:/code
    depends_on:
      - db
      - redis

  app:
    build:
      context: ./
      dockerfile: Dockerfile
    env_file:
      - ./.env
    volumes:
      - ./:/usr/src/app
    depends_on:
      - db
      - redis
    ports:
      - '8000:8000'
    restart: always

  nginx:
    build:
      context: ./docker/nginx
      dockerfile: Dockerfile
    depends_on:
      - app
      - db
    ports:
      - '80:80'

Когда я проведу это по

sudo docker-compose build --no-cache
sudo docker-compose up

Я не вижу никаких ошибок. Также как и не вижу вывода celery. Моя задача периодически помещает данные в базу данных. Эти данные должны отображаться на главной странице. Но этого не происходит. Я почти уверен, что база данных подключена, потому что другие функции работают. Если вам нужно, чтобы что-то еще было показано из моего проекта, дайте мне знать, пожалуйста.

docker-compose.yml:

  celeryworker:
    image: celeryworker
    ports: []
    command: /start-celeryworker

  celerybeat:
    image: celerybeat
    ports: []
    command: /start-celerybeat

  flower:
    image: flower
    ports:
      - "5545:5545"
    command: /start-flower

Dockerfile:

COPY ./compose/local/celery/worker/start /start-celeryworker
RUN sed -i 's/\r//' /start-celeryworker
RUN chmod +x /start-celeryworker

COPY ./compose/local/celery/beat/start /start-celerybeat
RUN sed -i 's/\r//' /start-celerybeat
RUN chmod +x /start-celerybeat

COPY ./compose/local/celery/flower/start /start-flower
RUN sed -i 's/\r//' /start-flower
RUN chmod +x /start-flower
Вернуться на верх