在docker microservices设置中运行django rq的正确方法 [英] the proper way to run django rq in docker microservices setup

查看:68
本文介绍了在docker microservices设置中运行django rq的正确方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我猜我的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆