Backend/Django

[Django] Celery+Redis+Rabbitmq docker setting

lim.dev 2022. 8. 3. 14:43

 

# settings.py
CELERY_BROKER_URL = 'amqp://rabbitmq:5672'
CELERY_ACCEPT_CONTENT = ['pickle','json']
CELERY_RESULT_BACKEND = 'redis://redis:6379'
CELERY_TASK_SERIALIZER = 'pickle'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Seoul'
DATA_UPLOAD_MAX_MEMORY_SIZE = int(1e10)
# redis cache

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.redis.RedisCache',
        'LOCATION': 'redis://redis:6379',
    }
}

+ docker setting 

  redis:
    container_name: redis
    image: redis:latest
    hostname: redis
    ports:
      - "6379:6379"

  rabbitmq:
    container_name: rabbitmq
    image: rabbitmq:3-management-alpine
    environment:
      - RABBITMQ_USER=guest
      - RABBITMQ_PASSWORD=guest
    ports:
      - "5672:5672" # Default Port
      - "15672:15672" # For UI
    expose:
      - "15672"
    
  celery_worker:
    container_name: celery_worker
    build:
      context: ./backend
      dockerfile: dockerfile
    volumes:
      - ./backend:/backend
    ports: []
    depends_on:
      - rabbitmq
      - backend
    environment:
      - C_FORCE_ROOT=true # pickle 사용 시 추가
    command: sh -c "celery -A backend worker --loglevel=info"