Pab*_*les 6 django celery docker django-channels
我正在使用django channels,我有一个关于如何处理使用发送消息的问题channels
上下文
我有2个容器:celery-worker而且api,我想通过websockets从celery-worker容器发送数据到浏览器通过api容器使用channels,这里是一张图片:
题
你知道如何在api容器中"初始化"通道并在容器内使用这个通道celery-worker吗?celery-worker仅在容器调用之后,Group('pablo').send(message)它自动发送到浏览器.
任何建议都可以.
注意:我试图不发布代码,因为它非常广泛而且可能会导致很难理解这个问题但是如果你愿意我可以发布你需要的代码.
您需要让其他容器知道您依赖它们。例子。在这里您可以看到 PostgreSQL 具有 user_service 和 notification_service 的依赖项,您需要为每个想要使用链接或依赖的其他容器的容器添加此依赖项。这是一个例子。
version: '3'
services:
db:
image: postgres
ports:
- '5434:5434'
user_service:
build: ""
environment:
- JWT_SECRET=mysecret_json_web_token_pass
command: python user/app.py
volumes:
- .:/microservices
ports:
- "9001:9001"
depends_on:
- db
notification_service:
build: ""
environment:
- JWT_SECRET=mysecret_json_web_token_pass
command: python notification/app.py
volumes:
- .:/microservices
ports:
- "9002:9002"
depends_on:
- db
Run Code Online (Sandbox Code Playgroud)
对于您的情况,您可能需要添加 dependent_on: - celery - redis
你也可以建立一个本地网络..但是我没有这样做,而是在同一个 docker-compose 中创建了容器,这样它们就可以互相了解。
这是另一个例子
version: '2'
services:
nginx:
image: nginx:latest
container_name: nx01
ports:
- "8001:8001"
volumes:
- ../src:/src
- ./static:/static
- ./media:/media/
- ./config/nginx:/etc/nginx/conf.d
depends_on:
- web
web:
build: .
container_name: dg01
command: gunicorn mydjango.wsgi 0.0.0.0:8000
depends_on:
- db
links:
- redis
volumes:
- ../src:/src
- ./static:/static
- ./media:/media/
expose:
- "8001"
db:
image: postgres:latest
container_name: pq01
ports:
- "5432:5432"
redis:
image: redis:latest
container_name: rd01
ports:
- '6379:6379'
celery:
build: .
container_name: cl01
command: celery worker --app=app.tasks
volumes:
- ..:/src
links:
- db
- redis
Run Code Online (Sandbox Code Playgroud)
在您的代码中调用它...像这样使用它。
CELERY_BROKER_URL = 'redis://redis:6379/0'
CELERY_RESULT_BACKEND = 'redis://redis:6379/0'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
371 次 |
| 最近记录: |