Celery AppRegistryNotReady: Приложения еще не загружены при использовании Django с Celery
Я столкнулся с проблемой при работе Celery и Django, когда получаю исключение "AppRegistryNotReady", говорящее, что "Apps are not loaded yet." Это происходит при попытке запустить Celery с помощью планировщика тактов.
Вот основные детали:
- Я использую Django с Celery для фоновой обработки задач.
- При попытке запустить планировщик Celery beat с помощью команды:
celery -A myproject beat -l info
Я столкнулся со следующим трассировочным отказом:
Отслеживание (последний последний вызов): ... raise AppRegistryNotReady("Apps are not loaded yet.") django.core.exceptions.AppRegistryNotReady: Приложения еще не загружены.
- Похоже, что проблема связана с настройками Django или загрузкой приложения во время инициализации Celery.
Это мой код
celery.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE','myproject.settings')
app = Celery('myproject')
app.conf.enable_utc = False
app.conf.update(timezone = 'Asia/Kolkata')
app.config_from_object(settings, namespace = 'CELERY')
# celery beat settings
app.conf.beat_schedule ={
}
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print(f'Request: {self.request!r}')
settings.py
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE ='Asia/Kolkata'
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
CELERY_RESULT_BACKEND = 'django-db'
from myapp.models import Client,ImportSettings
task_intervals = ImportSettings.objects.all()
CELERY_BEAT_SCHEDULE = {}
for task_interval in task_intervals:
interval_seconds = task_interval.check_frequency_minutes
client_id = task_interval.client
CELERY_BEAT_SCHEDULE[f'import-{client_id}'] = {
'task': 'myapp.tasks.process_csv_files',
'schedule': interval_seconds,
'args': (
'directory_path',
'table1',
'table2'
)
}
__init__.py
from .celery import app as celery_app
__all__ = ('celery_app',)
Любые соображения или предложения о том, как решить эту проблему, будут очень признательны. Спасибо!
Попробовал указать полный путь к приложению Celery:
celery -A myproject.celery beat -l info
Попробовал запустить Celery beat с опцией --detach
:
celery -A myproject.celery beat --detach -l info
Проверили настройки Django и загрузку приложения:
Убедились, что настройки Django и загрузка приложений верны в myproject/settings.py
и myproject/__init__.py
Убедитесь, что Celery правильно настроен в myproject/celery.py
файле
Проверили наличие проблем в файле myapp/models.py, особенно вокруг модели Import settings.
Убедитесь, что виртуальная среда активирована перед запуском команд Celery.
создал совершенно новый проект, и все равно ошибка сохраняется