在docker microservices设置中运行django rq的正确方法 [英] the proper way to run django rq in docker microservices setup
问题描述
我猜我的Docker容器设置不正确.因为每次从django运行任务时,我都会在 ps aux
的docker容器输出中看到,有一个 python mange.py rqworker mail
创建的新进程,而不是使用现有的进程.请参见截屏视频: https://imgur.com/a/HxUjzJ5
I have somehow bad setup of my docker containers I guess.
Because each time I run task from django I see in docker container output of ps aux
that there is new process created of python mange.py rqworker mail
instead of using the existing one.
See the screencast: https://imgur.com/a/HxUjzJ5
在我的docker compose for rq worker容器中的 command
中执行的过程如下.
the process executed from command
in my docker compose for rq worker container looks like this.
#!/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的工作方式,对吗?
I am new to docker and wondering a bit that this is started like this without deamonization... but is it a dockerish way of doing thing, right?
推荐答案
这就是我用docker-compose做的事情:
Here's what I do, with 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 microservices设置中运行django rq的正确方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!