Django как решить ошибку apps are not loaded yet?
Я использую apscheduler
для своего проекта Django. Я пытаюсь выводить список всех пользователей каждые 10 секунд.
Но когда я пытаюсь это сделать, возникает ошибка:
django.core.exceptions.AppRegistryNotReady: Приложения еще не загружены.
scheduler.py
from apscheduler.schedulers.background import BackgroundScheduler
from accounts.models import UserProfile
sched = BackgroundScheduler()
def period():
users = UserProfile.objects.all()
print(users)
def start():
sched.add_job(period, 'interval', seconds=10)
sched.start()
apps.py
from django.apps import AppConfig
from dashboard.scheduler import start
class DashboardConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'dashboard'
def ready(self):
start()
accounts/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class UserProfile(AbstractUser):
username = models.CharField(max_length=500, unique=True)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
password = models.CharField(max_length=250)
email = models.EmailField(max_length=254)
isUserActive = models.BooleanField(default=False)
def __str__(self):
return self.username
Например, когда я делаю:
def period():
print("okey!")
Это работает. Но когда я пытаюсь получить объекты модели, он выдает ошибку. Как я могу ее решить?
traceback
Импортируйте модуль планировщика только в функции ready
, иначе вы импортируете сериализатор, и, таким образом, по степени модели до того, как они будут загружены:
from django.apps import AppConfig
# no import of the sechduler
class DashboardConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'dashboard'
def ready(self):
# import the scheduler in the ready function
from dashboard.scheduler import start
start()