Реализация сельдерея испортила мой INSTALLED_APPS (ModuleNotFoundError: нет модуля с именем myapp) - PullRequest
0 голосов
/ 20 апреля 2020

Я думаю, что на этот вопрос могут быть похожие вопросы, но не совсем такие, поэтому я публикую это. В основном мой Djang Rest Framework работал нормально, затем я попытался реализовать сельдерей, и теперь он испортил мой импорт, и, похоже, выдает сообщение об ошибке после инициации работника сельдерея. Я нахожусь на Windows 10.

Структура проекта

- MyProj
  -> MyProj (same name)
    -> __init__.py
    -> celery_tasks.py
    -> settings.py
  - MyApp
    -> __init__.py
    -> load_of_other_files

init.py

#from __future__ import absolute_import, unicode_literals
from MyProj.celery_tasks import app as celery_app

__all__ = ('celery_app',)

celery_tasks.py

#from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
import time

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
app = Celery("tasks", broker="amqp://localhost//", backend="rpc://")
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

settings.py

import os
..
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'MyApp',
]

Затем я перехожу в мой каталог MyProj и запускаю работника как Итак:

celery -A celery_tasks worker --loglevel=INFO --concurrency=10 -n worker1.%h --pool=solo

Получаемая трассировка:

ModuleNotFoundError: No module named 'MyApp'

Я пробовал с и без from __future__ import absolute_import, unicode_literals, но, похоже, не работает. Я понимаю, что absolute_import необходим, чтобы избежать конфликта celery.py с библиотекой celery, что в моем случае не так, потому что мой celery.py называется celery_tasks.py (чтобы избежать путаницы). Как я могу обойти это сообщение об ошибке?

...