Django Celery, ошибка импорта приложений только на производстве
У меня такая структура файла:
- myapp
- artist_applications
- tasks.py
- tasks
- celery.py
- artist_applications
# 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"