Как запустить Celery через Docker
Пишу сайт на Django, появилась потребность в асинхронных задачах, взялся за Celery. На локальном сервере всё работает корректно, но столкнулся с проблемой при переносе.
При запуске worker'а на боевом сервере через Докер выскакивает ошибка: celery -A crm_transfer wokrer -l info
Usage: celery [OPTIONS] COMMAND [ARGS]...
Error: Invalid value for '-A' / '--app':
Unable to load celery application.
The module crm_transfer was not found.
Вот код:
docker-compose.yml
celery:
container_name: 'avihovalot.celery'
build : .
command: celery -A crm_transfer worker -l INFO
volumes:
- .:/app
links:
- redis
depends_on:
- redis
- django
celery.py
import os
from celery import Celery
from celery.schedules import crontab
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'crm_transfer.settings')
app = Celery('crm_transfer')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
init.py
from .celery import app as celery_app
__all__ = ('celery_app', )
settings.py
REDIS_HOST = '0.0.0.0'
REDIS_PORT = '6379'
CELERY_BROKER_URL = 'redis://' + REDIS_HOST + ':' + REDIS_PORT + '/0'
CELERY_RESULT_BACKEND = 'redis://' + REDIS_HOST + ':' + REDIS_PORT + '/0'
Структура:
crm_transfer:
-crm_transfer:
-init.py
-setting.py
-celery.py
-api:
-tasks.py
Dockerfile
FROM python:3.8
ENV PYTHONDONTWRITEBYTECODE 1 ENV TZ=Europe/Kiev
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update
RUN apt-get install -y gcc g++ cmake clang python3-dev python-dev
python3-
pip nano \
bpython3 postgresql libgmp10-dev build-essential libssl-dev libffi-dev
ca-certificates supervisor
RUN python -m pip install --upgrade pip
RUN python -m pip install setuptools cython
COPY ./requirements.txt /requirements.txt
RUN python -m pip install -r /requirements.txt
RUN python -m pip install uvicorn[standard] websockets
RUN python -m pip install pgcli
#RUN daphne -b 0.0.0.0 -p 8008 crm_transfer.asgi:channel_layer
USER root
EXPOSE 9000 8008 8001
Не понимаю, почему не находит воркер, ведь и в нужной директории нахожусь, и код, вроде, правильный... За сегодня уже весь гугл перелазил - ничего( Буду очень благодарен за помощь)
celery==5.1.0