Django Celery, ошибка импорта приложений только на производстве

У меня такая структура файла:

  • myapp
    • artist_applications
      • tasks.py
    • tasks
      • celery.py
# settings.py
INSTALLED_APPS = [
    'myapp.artist_application',
    ...
# celery.py
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings.production')
app = Celery("tasks")
app.config_from_object('django.conf:settings', namespace="CELERY")
app.autodiscover_tasks()
# tasks.py

from tasks.celery import app as celery_myapp
from django.apps import apps
from django.conf import settings
import requests


@celery_esns.task(name='sample_task')
def sample_task():
    print('TESTING CELERY')

@celery_esns.task(name='publish_artist_task')
def publish_artist_task(payload, artist_id):
    r = requests.post(settings.PUBLISH_URL, json = payload)

    if r.status_code == 200:
        apps.get_model('artist_application', 'Artist').objects.filter(unique_id=artist_id).update(published=True)
    else:
        raise Exception("Error publishing artist with id: " + artist_id)

При разработке все работает нормально, когда я запускаю Celery с:

celery -A myapp.tasks worker -Q celery -l info

Но на производстве я запускаю команду (в virtualenv) и получаю ошибку:

django.core.exceptions.ImproperlyConfigured: Cannot import 'artist_application'. Check that 'myapp.artist_application.apps.ArtistApplication.name' is correct.

Есть идеи, где искать? Я не понимаю, как 'runserver' загружает приложения иначе, чем wsgi?

Мне пришлось указать полный точечный путь в apps.py

from django.apps import AppConfig

class ArtistApplicationConfig(AppConfig):
    name = 'myapp.artist_application'
    verbose_name = "Artist Application"
Вернуться на верх