在docker microservices设置中运行django rq的正确方法

时间:2018-11-30 12:22:05

标签: django docker python-rq django-rq

我猜我的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 个答案:

答案 0 :(得分:0)

这就是我用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