django.core.exceptions.AppRegistryNotReady: приложения еще не загружены. с сельдереем - PullRequest
0 голосов
/ 04 мая 2018

У меня есть периодическая задача, которая создает и сохраняет модель каждую секунду. Итак, я настроил это

CELERY_IMPORTS = (
    'myapp.tasks',
)

CELERY_BEAT_SCHEDULE = {
    'periodic_task': {
        'task': 'myapp.tasks.periodic_task',
        'schedule': timedelta(seconds=1),
    },
}

и типичный 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', 'myapp.settings')

app = Celery('myapp')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

и наконец я настроил супервизор , чтобы начать это:

[program:myapp-celery]
command=/home/me/myapp/venv/bin/celery worker -A myapp --loglevel=INFO
directory=/home/me/myapp
user=nobody
numprocs=1
stdout_logfile=/home/me/myapp/logs/celery.log
stderr_logfile=/home/me/myapp/logs/celery.log
autostart=true
autorestart=true
startsecs=10

stopwaitsecs = 600
stopasgroup=true
priority=1000

И запускается функция в tasks.py , в которой используется импортированная модель, которая, как я понимаю, еще не загружена, вызывая эту ошибку

django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.>

Так что я хочу какой-нибудь хук или флаг, указывающий, что все установлено, чтобы мое расписание могло периодически выполнять это.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Не уверен, что это связано или нет, но похожая проблема с сельдереем 4.2.0rc3 была зарегистрирована здесь:

https://github.com/celery/celery/issues/4699

и исправлено здесь:

https://github.com/celery/celery/pull/4719

0 голосов
/ 04 мая 2018

вы можете попробовать эту команду:

сельдерей -Мапп-работник -l инфо

...