오라클 환경때문에 1버전의 장고를 써야하는 경우가 있습니다.
이 때 Celery를 붙일 때 버전 문제가 많습니다.
1.11 버전에서 설정의 차이는 크게 없지만, 버전의 문제가 많습니다.
종속되었거나 혹은 연결되어있는 라이브러리의 버전들도 많아서
하위와 같이 따라해보시면 될 것 같습니다.
[ 개발 환경 ]
mac m1
python 3.8
django 1.11.29
[ 설치 라이브러리 ]
celery==4.4.7
django-celery-results==1.0.2
kombu==4.6.11
vine==1.3.0
redis==3.5.3
billiard==3.6.4.0
Django==1.11.29
[ config/settings/base.py ]
CELERY_ALWAYS_EAGER = True
CELERY_BROKER_URL = 'redis://127.0.0.1:6379'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Seoul'
[ config/settings/celery.py ]
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.prod')
app = Celery('config', broker=settings.CELERY_BROKER_URL, backend=settings.CELERY_RESULT_BACKEND)
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print(f'Request: {self.request!r}')
config 등 경로설정은 본인의 개발환경에 맞춰서 수정해주시면 됩니다~!
[ config/__init__.py ]
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ['celery_app']
[ api/tasks.py ]
from __future__ import absolute_import, unicode_literals
from celery import shared_task
@shared_task
def test():
print('test')
return "success"
그럼,
redis-server 로 redis를 실행한 후
celery -A config worker -l info 를 통해 Celery가 실행됨을 확인할 수 있습니다.
Django 1.11
Mac m1 또는 Ubuntu 22.04
Python 3.8
안되시거나~
설정에 어려움이 있으면 언제든지 댓글 주세요~
댓글