Класс модели robovise.models.RoboProcessedFiles не объявляет явную метку app_label и не находится в приложении в INSTALLED_APPS Celery

Я использую celery в своем проекте django. 2 проблемы, задача autodiscover не обнаруживает мою задачу в robovise/tasks.py, поэтому мне пришлось явно передать путь к файлу tasks в аргументе include экземпляра Celery. Затем, когда я пытаюсь вызвать задачу в моей оболочке django, я получаю эту ошибку в Celery:

[2021-08-17 16:26:36,312: ERROR/MainProcess] Task robovise.tasks.process_new_users_resp[5763be00-77d4-4705-bb9a-6e06f2b03464] raised unexpected: RuntimeError("Model class robovise.models.RoboProcessedFiles doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.")
Traceback (most recent call last):
  File "/Users/cyzanfar/Desktop/beagle/projects/financial_services/env/lib/python3.8/site-packages/celery/app/trace.py", line 450, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/Users/cyzanfar/Desktop/beagle/projects/financial_services/env/lib/python3.8/site-packages/celery/app/trace.py", line 731, in __protected_call__
    return self.run(*args, **kwargs)
  File "/Users/cyzanfar/Desktop/beagle/projects/financial_services/financial_services/robovise/tasks.py", line 5, in process_new_users_resp
    from robovise.models import RegisteredUser
  File "/Users/cyzanfar/Desktop/beagle/projects/financial_services/financial_services/robovise/models.py", line 12, in <module>
    class RoboProcessedFiles(models.Model):
  File "/Users/cyzanfar/Desktop/beagle/projects/financial_services/env/lib/python3.8/site-packages/django/db/models/base.py", line 113, in __new__
    raise RuntimeError(
RuntimeError: Model class robovise.models.RoboProcessedFiles doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

Я видел много сообщений, говорящих об этой проблеме, но не нашел никакого решения. Это действительно странно, поскольку у меня есть такая же установка в другом проекте, и она работает нормально.

структура проекта:


├── financial_services
│   ├── __init__.py
│   ├── asgi.py
│   ├── celery.py
│   ├── settings
│   │   ├── __init__.py
│   │   ├── base.py
│   │   ├── development.py
│   │   └── production.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── requirements.txt
└── robovise
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── constants.py
    ├── helpers.py
    ├── migrations
    ├── models.py
    ├── seed.py
    ├── services.py
    ├── tasks.py
    ├── tests.py
    └── views.py

celery.py

from __future__ import absolute_import
from celery import Celery

# Set the default Django settings module for the 'celery' program.
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'financial_services.settings')

app = Celery('financial_services', include=['robovise.tasks'])

# 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 app configs.
app.autodiscover_tasks()

и вот robovise/tasks.py:

from celery import shared_task

@shared_task
def process_new_users_resp():
    from robovise.models import RegisteredUser

    print("IN TASK!!!")
    RegisteredUser.fetch_and_update_resp()

    return True

Также мой settings.base.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'robovise',
]
Вернуться на верх