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()

И это все ;)

Вернуться на верх