python - 如何使用 docker-compose 运行 Python Django 和 Celery?

标签 python django docker docker-compose celery

我有一个使用 Django 和 Celery 的 Python 应用程序,并且我尝试使用 dockerdocker-compose< 运行/strong> 因为我还使用 RedisDynamodb

问题如下:

我无法同时执行服务WSGICelery,因为只有第一条指令工作正常..

version: '3.3'

services:
  redis:
    image: redis:3.2-alpine
    volumes:
      - redis_data:/data
    ports:
      - "6379:6379"
  dynamodb:
    image: dwmkerr/dynamodb
    ports:
      - "3000:8000"
    volumes:
      - dynamodb_data:/data
  jobs:
    build:
      context: nubo-async-cfe-seces
      dockerfile: Dockerfile
    environment:
      - REDIS_HOST=redisrvi
      - PYTHONUNBUFFERED=0
      - CC_DYNAMODB_NAMESPACE=None
      - CC_DYNAMODB_ACCESS_KEY_ID=anything
      - CC_DYNAMODB_SECRET_ACCESS_KEY=anything
      - CC_DYNAMODB_HOST=dynamodb
      - CC_DYNAMODB_PORT=8000
      - CC_DYNAMODB_IS_SECURE=False

    command: >
      bash -c "celery worker -A tasks.async_service -Q dynamo-queue -E --loglevel=ERROR &&
               uwsgi --socket 0.0.0.0:8080 --protocol=http --wsgi-file nubo_async/wsgi.py"
    depends_on:
      - redis
      - dynamodb
    volumes:
      - .:/jobs
    ports:
      - "9090:8080"
volumes:
  redis_data:
  dynamodb_data:

有人遇到同样的问题吗?

最佳答案

您可以引用Saleordocker-compose项目。我建议让 celery 运行其守护进程仅依赖于 redis 作为代理。参见docker-compose.yml的配置文件:

services:
  web:
    build:
      context: .
      dockerfile: ./Dockerfile
      args:
        STATIC_URL: '/static/'
    restart: unless-stopped
    networks:
      - saleor-backend-tier
    env_file: common.env
    depends_on:
      - db
      - redis

    celery:
        build:
          context: .
          dockerfile: ./Dockerfile
          args:
            STATIC_URL: '/static/'
        command: celery -A saleor worker --app=saleor.celeryconf:app --loglevel=info
        restart: unless-stopped
        networks:
          - saleor-backend-tier
        env_file: common.env
        depends_on:
          - redis

另请注意,从两个服务到 redis 的连接是由环境变量单独设置的,如 common.env 所示。文件:

CACHE_URL=redis://redis:6379/0
CELERY_BROKER_URL=redis://redis:6379/1

关于python - 如何使用 docker-compose 运行 Python Django 和 Celery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53064115/

相关文章:

python - 部分使用 Django

mysql - 使用安装在主机上的 mysql 对 wordpress 进行 dockering

java - org.apache.http.NoHttpResponseException :localhost:2377 failed to respond

node.js - 从 docker 构建时安装 nodejs 时出错

python - 如何使用 Django Rest Framework 更新用户信息?

python 3.5 - django 1.10 - mysqlclient windows 7安装错误

python - 如何使用 Python 更改文件的字段分隔符?

python - 我无法理解这个 lambda 函数

python - 如何从 POINT 中找到经纬度值

python - 无法让 Django 提供静态文件