В Celery Task запрос соответствия MyModel не существует
Я пытаюсь запустить мое приложение django с помощью docker, который включает в себя celery. Я могу установить все на local и все работает отлично. Однако, когда я запускаю docker, и моя задача выполняется, возникает следующая ошибка:
myapp.models.mymodel.DoesNotExist: mymodel matching query does not exist.
Я совсем новичок в celery и docker, поэтому не уверен, что я делаю неправильно.
Celery настроен правильно, я убедился в этом. Ниже указаны broker_url и backend:
CELERY_BROKER_URL = 'redis://redis:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_BACKEND = 'django-db'
Вот мой файл docker-compose.yml:
version: "3.8"
services:
redis:
image: redis:alpine
container_name: rz01
ports:
- "6379:6379"
networks:
- npm-nw
- braythonweb-network
braythonweb:
build: .
command: >
sh -c "python manage.py makemigrations &&
python manage.py migrate &&
gunicorn braython.wsgi:application -b 0.0.0.0:8000 --workers=1 --timeout 10000"
volumes:
- .:/code
ports:
- "8000:8000"
restart: unless-stopped
env_file: .env
networks:
- npm-nw
- braythonweb-network
celery:
build: .
restart: always
container_name: cl01
command: celery -A braython worker -l info
depends_on:
- redis
networks:
- npm-nw
- braythonweb-network
networks:
braythonweb-network:
npm-nw:
external: false
Я пробовал несколько вещей из разных постов на stackoverflow, например apply_async. Я также убедился, что моя модель существует.
Исключение говорит вам, что вы ищете запись в вашей базе данных, которая не существует (пока). Посмотрите любую функцию, в которой вы запрашиваете базу данных, и убедитесь, что вы создали нужную запись, прежде чем искать ее. Я предполагаю, что у вас есть таблица в базе данных для некоторой конфигурации, которая считывается в функции, но база данных пуста в начале.
Мне пришлось добавить следующее в контейнер с сельдереем, чтобы обеспечить доступ к нему:
volumes:
- .:/code