Celery 실습 중에 아래 코드를 작성하고 Script를 실행하니 다음과 같은 에러 발생
from django_celery_beat.models import PeriodicTask
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
ChatGPT)
It looks like you are trying to use Django before the application registry has been fully initialized. This can happen if you are trying to access models before the app containing them has been fully loaded.
To fix this issue, make sure that you are not trying to access models or the Django ORM before the application registry has been fully populated.
해결책
import django
if __name__ == '__main__':
django.setup()
from django_celery_beat.models import PeriodicTask
* if __name__ == '__main__': 조건 없이 쓸 수도 있지만, 외부에서 import 할 때 스크립트가 전체가 다 실행되는 일을 막기 위해서 쓰도록 하자
* 왜 이런 error가 발생할까. django로 project를 시작하거나, app을 만들면 기본적으로 제공되는 파일들이 있다. project의 settings.py, urls.py 등.. 그리고 app을 만들면 생기는 views.py 등..
이런 기본적으로 생기는 파일들 외에서 (위에서는 Celery와 관련된 파일) ORM을 쓸 때 이런 문제가 생기는 듯 하다.
(짐작이니 추후에 좀 더 알아보자)
출처:
'Python > Django' 카테고리의 다른 글
ORM queries: .aggregate() (0) | 2023.01.13 |
---|---|
values_list(), values() method in Django (0) | 2023.01.09 |
email 보내기 # Django send email # SMTP (0) | 2023.01.05 |
django ORM list filter : __in (0) | 2022.12.16 |
Django template: mathfilters - template에서 숫자 계산하기 (0) | 2022.12.07 |