Ошибка celery-container (завершена с кодом 1) после установки и добавления django-crontab в INSTALLED_APPS в settings.py
Я работаю над проектом django, которому нужен celery для запуска некоторых задач в фоновом режиме. Мне также нужно запускать некоторые cron-jobs, поэтому я установил django-crontab в контейнер, добавив его в INSTALLED_APPS в settings.py, «python manage.py crontab show» OUTPUT:
root@865809c7149e:/apps# python manage.py crontab show
Текущие активные задания в кронтабе: ab590d03e928be09c5fc1a0048404548 -> ('*/3 * * * * *', 'AppName.cron.cron.cron_job_method', '>> /apps/crontab.log')
САМОСТОЯТЕЛЬНО не появляется файл crontab.log... Я не понимаю, почему...
И:
Контейнерcelery завершает работу по команде «docker compose up» с:
... celery-1 | ModuleNotFoundError: Нет модуля с именем 'django_crontab' celery-1 завершил работу с кодом 1 web-1 | Наблюдение за изменениями файлов с помощью StatReloader
.
Вот мой docker-compose.yml
services:
db:
image: postgres:17
env_file: .env
volumes:
- ./local-db:/var/lib/postgresql/data
redis:
image: redis:7
web:
build: .
command: python manage.py runserver 0:8030
ports:
- 8030:8030
volumes:
- ./projectDIR:/apps
env_file: .env
links:
- db
depends_on:
- db
- redis
celery:
build: .
command: celery -A projectDIR worker -l INFO
env_file: .env
volumes:
- ./projectDIR:/apps
environment:
redis_url: redis://redis:6379/0
links:
- db
- redis
- web
depends_on:
- web
- redis
ЛЮБАЯ ПОМОЩЬ БУДЕТ ОЧЕНЬ ПРИЗНАТЕЛЬНА!
После нескольких часов отчаяния я наконец пришел к решению (на случай, если у кого-то есть похожие проблемы...):
- Я закомментировал все строки кода, ссылающиеся на crontab (#) в модуле django settings.py, чтобы избежать ошибки...
- затем я запустил docker (чтобы иметь возможность запускать bash):
docker compose up 3. чтобы я мог вызвать терминал контейнера celery $ docker compose exec celery bash 4. где я просто выполнил установку pip: $ pip install django-crontab 5. Наконец - после дешевого Ctrl+C - я перезапустил контейнер (шаг.2)
И вуаля, никаких ошибок!