worker의 작업 결과를 django를 이용하여 저장하자! → 이건 필수는 아니며 저장하지 않아도 된다
장고(Django)에서 셀러리(Celery) 사용하기 2편
필수 라이브러리 설치
pip install django-celery-results
INSTALLED_APPS = (
...,
'django_celery_results',
)
# CELERY_IGNORE_RESULT = True #result를 저장하지 않겠다는 설정임. 주석처리
마이그레이션
python manage.py migrate django_celery_results
Django 백엔드와 같이 사용할 때는 백엔드 DB안에 django_celery_results_taskresult 테이블이 있어야 함. 마이그레이션 한 곳에서 가져오면 됨

app = Celery(broker=TASK_BROKER_URL)
# result를 저장할 백엔드 설정(settings.py)
DJANGO_CELERY_RESULTS_TASK_ID_MAX_LENGTH = 191
CELERY_RESULT_BACKEND = 'django-db'
CELERY_BROKER_URL = celery_env['CELERY_BROKER_URL']
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
주의!!
<aside> 💡 env에 celery라고 되어있는 변수가 있으면 celery 관련 app이라고 인식하여 'ModuleNotFoundError' 에러남
</aside>
백엔드 결과를 저장하지 않을 경우, AsyncResult를 사용하면 상태가 계속 PENDING으로 뜬다