在 docker 微服务设置中运行 django rq 的正确方法
Posted
技术标签:
【中文标题】在 docker 微服务设置中运行 django rq 的正确方法【英文标题】:the proper way to run django rq in docker microservices setup 【发布时间】:2019-05-02 14:36:56 【问题描述】:我猜我的 docker 容器设置不正确。
因为每次我从 django 运行任务时,我都会在 ps aux
的 docker 容器输出中看到创建了 python mange.py rqworker mail
的新进程,而不是使用现有进程。
观看截屏视频:https://imgur.com/a/HxUjzJ5
在我的 docker compose for rq worker 容器中从 command
执行的过程如下所示。
#!/bin/sh -e
wait-for-it
for KEY in $(redis-cli -h $REDIS_HOST -n 2 KEYS "rq:worker*"); do
redis-cli -h $REDIS_HOST -n 2 DEL $KEY
done
if [ "$ENVIRONMENT" = "development" ]; then
python manage.py rqworkers --worker-class rq.SimpleWorker --autoreload;
else
python manage.py rqworkers --worker-class rq.SimpleWorker --workers 4;
fi
我是 docker 新手,有点想知道这是在没有去恶魔化的情况下开始的……但这是一种 dockerish 的做事方式,对吗?
【问题讨论】:
【参考方案1】:这就是我所做的,使用 docker-compose:
version: '3'
services:
web:
build: .
image: mysite
[...]
rqworker:
image: mysite
command: python manage.py rqworker
[...]
rqworker_high:
image: mysite
command: python manage.py rqworker high
[...]
然后开始:
$ docker-compose up --scale rqworker_high=4
【讨论】:
以上是关于在 docker 微服务设置中运行 django rq 的正确方法的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 .accepted_renderer 未在 Django 中的响应错误上设置
结合Docker运行Spring Cloud微服务的多种方式
如何在单独的 docker 容器中配置和运行 Eureka Server、微服务(Eureka Client)、Zuul?