[ django部署celery项目 ]


  • beat循环任务,
  • flow监控可视化页面
  • work消费者

docker-compose.yml

version: '3'

volumes:
  backend_local_postgres_data: {}
  backend_local_postgres_data_backups: {}

services:
  django: &django
    build:
      context: ./backend
      dockerfile: ./compose/local/django/Dockerfile
    image: backend_local_django
    # container_name: backend_local_django
    depends_on:
      - postgres
      - redis
    volumes:
      - ./backend:/app:z
    env_file:
      - ./backend/.envs/.local/.django
      - ./backend/.envs/.local/.postgres
      - ./backend/.envs/.local/.mongo
    ports:
      - "8000:8000"
    command: /start
    container_name: backend_local_docs

  celeryworker:
    <<: *django
    image: backend_local_celeryworker
    depends_on:
      - redis
      - postgres
    ports: []
    command: /start-celeryworker

  celerybeat:
    <<: *django
    image: backend_local_celerybeat
    depends_on:
      - redis
      - postgres
    ports: []
    command: /start-celerybeat

  flower:
    <<: *django
    image: backend_local_flower
    ports:
      - "5555:5555"
    command: /start-flower

start-celerybeat

#!/bin/bash

set -o errexit
set -o pipefail
set -o nounset

exec celery -A config.celery_app beat -l INFO

start-celeryworker

#!/bin/bash

set -o errexit
set -o pipefail
set -o nounset


exec celery -A config.celery_app worker -l INFO

backend_local_flower

#!/bin/bash

set -o errexit
set -o nounset

# env文件里的环境变量
CELERY_FLOWER_USER=debug
CELERY_FLOWER_PASSWORD=debug
CELERY_BROKER_URL="${REDIS_URL}"

exec celery \
    -A config.celery_app \
    -b "${CELERY_BROKER_URL}" \
    flower \
    --basic_auth="${CELERY_FLOWER_USER}:${CELERY_FLOWER_PASSWORD}"