Django.core.exceptions.AppRegistryNotReady: Приложения еще не загружены | APScheduler
У меня есть следующий код APScheduler:
import atexit
from apscheduler.schedulers.background import BackgroundScheduler
from main.utils import run_employee_import
scheduler = BackgroundScheduler()
scheduler.add_job(run_employee_import, "interval", minutes=2)
scheduler.start()
# Shut down the scheduler when exiting the app
atexit.register(lambda: scheduler.shutdown())
Когда я добавляю этот код в settings.py
, чтобы запустить его при запуске приложения, он выдает мне следующую ошибку:
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
PS: Я не включил код run_employee_import
, потому что я уже протестировал его (заменил его содержимое на простой pass
) и ничего не изменилось, поэтому он не имеет отношения к ошибке.
Я полностью изменил способ запуска планировщика. И это сработало, позвольте мне поделиться с вами решением:
Я создаю .py файл внутри приложения:
app/bulk_task.py
Я создаю функцию start и помещаю в нее код расписания:
from apscheduler.schedulers.background import BackgroundScheduler
from main.utils import **<MY_TASK>**
def start():
scheduler = BackgroundScheduler()
scheduler.add_job(**<MY_TASK>**, "interval", minutes=5)
scheduler.start()
Затем я открываю файл apps.py моего приложения и добавляю следующий код:
from django.apps import AppConfig
class MainConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "main"
def ready(self):
from . import bulk_task
bulk_task.start()
И это все ;)