Django-celery-results: ошибка ModuleNotFoundError: нет модуля с именем 'django_celery_results'
Я пытаюсь запустить "celery -A myproj worker -l info", и он выдает ошибку ModuleNotFoundError: нет модуля с именем "django_celery_results". Все зависимости установлены (django, celery, django-celery-results, redis). Я пытался запустить его с правами администратора, но это тоже не помогло. Я попытался изменить версию python с 3.13 на 3.11, но также безрезультатно.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_celery_results',]
Эта ошибка обычно возникает, когда Celery не может найти среду Django. Вот шаги для ее устранения:
Шаг 1: Сначала активируйте свою виртуальную среду
source your_venv/bin/activate # On Linux/Mac
your_venv\Scripts\activate # On Windows
Шаг 2: Проверьте свой celery.py файл
Убедитесь, что у вас есть файл celery.py в каталоге вашего проекта (на том же уровне, что и settings.py):
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproj.settings')
app = Celery('myproj')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
Шаг 3: Обновление settings.py
Добавьте эти конфигурации в свои настройки Django:
# Add to INSTALLED_APPS
INSTALLED_APPS = [
# ... other apps
'django_celery_results',
]
# Add Celery config
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'django-db'
Шаг 4: Запустите миграцию
python manage.py migrate django_celery_results
Шаг 5: Запустите Celery из каталога проекта
cd /path/to/your/project
celery -A myproj worker -l info
Вы также можете попробовать:
celery -A myproj.celery worker -l info
Альтернатива: Используйте Redis для получения результатов (необязательно)
Если у вас все еще возникают проблемы, вы можете полностью пропустить django-celery-results:
# In settings.py
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
# Remove from INSTALLED_APPS
# 'django_celery_results',
Отладочный тест
Чтобы убедиться, что пакет доступен, выполните следующие действия:
python -c "import django_celery_results; print('Package found')"
Основная проблема обычно заключается в запуске Celery вне виртуальной среды или в отсутствии настроек Django в celery.py. Убедитесь, что вы запускаете все команды из активированной виртуальной среды и из корневого каталога вашего проекта.
Выполняли ли вы команды makemigraions и migrate в своем проекте после установки пакетов celery ?
попробуйте получить список ваших pip-пакетов через IDE или просто: python pip list или python -m pip show django-celery-results, чтобы убедиться, что пакет установлен
Также убедитесь, что вы используете свой venv, а не глобальные пакеты python, выполнив следующие действия: which celery и which django_celery_results