Как установить 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