ModuleNotFoundError: Нет модуля с именем 'rest_framework' при запуске celery -A backend worker -l info
Я пытаюсь выполнить свои задачи и в настоящее время использую для этого Celery наряду с Django и DjangoRestFramework
Вот как я все настроил, корневой каталог также называется backend
.
├── backend
│ ├── asgi.py
│ ├── celery.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── manage.py
└── save_to_db
├── admin.py
├── apps.py
├── dump.rdb
├── migrations
│ ├── 0001_initial.py
│ └── 0002_auto_20210728_0251.py
├── models.py
├── serializers.py
├── tasks.py
├── tests.py
├── urls.py
└── views.py
Итак, у меня есть вся моя конфигурация для Celery в celery.py
, которую я взял из этой статьи о том, как настроить Celery для Django https://docs.celeryproject.org/en/stable/django/first-steps-with-django.html.
Вот как выглядит моя конфигурация
import os
from celery import Celery
# Set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
app = Celery('backend')
# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
# should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')
# Load task modules from all registered Django apps.
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print(f'Request: {self.request!r}')
Я решил выполнить эту команду, чтобы запустить Celery celery -A backend worker -l info
Но это дает мне эту ошибку
Я установил DjangoRestFramework через Poetry и он появился в моем pyproject.toml
и я включил rest_framework
в мой INSTALLED_APPS
в настройках
Установленные приложения и некоторые другие конфиги для celery в моем settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'save_to_db'
]
# Celery Configuration Options
CELERY_TIMEZONE = "US/Eastern"
CELERY_TASK_TRACK_STARTED = True
# CELERY STUFF
BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
Работает ли ваш проект в виртуальной среде? Если да, запустите celery в виртуальной среде.