Есть проект на FastAPI
Пытаюсь прикрутить celery. Проблема в том, что image на докере не стартует.
Error:
Unable to load celery application.
The module celery_worker was not found.
Структура проекта
docker-compose.yaml
Dockerfile
.env
requirements.txt
Находятся в корне.
\api\celery_worker.py
spoiler"""celery module"""
import os
import time
#celery
from celery import Celery
celery = Celery(__name__)
celery.conf.broker_url = os.environ.get("CELERY_BROKER_URL", "redis://localhost:6379")
celery.conf.result_backend = os.environ.get("CELERY_RESULT_BACKEND", "redis://localhost:6379")
@celery.task(name="create_task")
def create_task1(arg1, arg2):
time.sleep(int(arg1+arg2) * 2)
return True
docker-compose.yaml
spoiler
version: "3.9"
services:
db:
image: registry.all-code.com:5000/custom-postgres
build: ./custom-postgres
restart: unless-stopped
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
- ./custom-postgres/custom_postgresql.conf:/etc/postgresql.conf
command: postgres -c config_file=/etc/postgresql.conf
environment:
- POSTGRES_DB=b2market_marketplace_development
- POSTGRES_USER=b2market
- POSTGRES_PASSWORD=postgres
api_py:
build: .
restart: unless-stopped
ports:
- "5000:5000"
depends_on:
- db
command: bash -c "cd b2market_marketplace && alembic upgrade head && uvicorn api.main:app --host 0.0.0.0 --port=5000 --reload"
volumes:
- /b2market_marketplace
- ./alembic:/b2market_marketplace/alembic
- ./api:/b2market_marketplace/api
env_file:
- .env
worker:
container_name: worker
build: .
restart: always
command: celery -A celery_worker.celery worker --loglevel=INFO
volumes:
- /b2market_marketplace
- ./api:/b2market_marketplace/api
environment:
- CELERY_BROKER_URL=redis://redis:6379/0
- CELERY_RESULT_BACKEND=redis://redis:6379/0
depends_on:
- api_py
- redis
redis:
container_name: redis
image: redis:6.2-alpine
Не пойму, почему упорно не находит модуль celery_worker?
Я пробовал указывать api.celery_worker
В requirements.txt
celery==4.4.7
flower==0.9.7
redis==3.5.3
Пробовал вместо celery = Celery(__name__) писать celery = Celery("worker")
Не работает
Кто знает в чём проблема? Помогите пожалуйста!