Tag: 芹菜

无法在docker容器中启动rabbitmq-server,如何编写这个Dokcerfile?

无法在我的Docker容器中启动rabbitmq-server 这是我的Dockerfile # python official docker image, I have check that it is base on the debain jessie # The first line of python:2.7 Dockerfile is "FROM buildpack-deps:jessie" FROM python:2.7 # The rabbitmq-server install commands are as follow # I am sure that if I execute those commands in a Debain Jessie Server # The […]

在AWS上监控和扩展基于Docker的Celery工作者群集

所以我有一个docker镜像,通过supervisor运行一个芹菜工作器,在单一docker Elastic Beanstalk(相当长的任务,所以acks late = true , concurrency = 1和prefetch multiplier = 1 )上工作得很好。 麻烦的是我想根据工作人员的有效任务负载来扩展实例,而EB只允许整个networking和CPU负载。 添加一个规则来扩大CPU负载工作正常,但我不能保证EB不会决定在任务中间缩小。 这将触发一个docker stop并有效地杀死任何不能很快完成的正在运行的芹菜(如果我没有弄错的话,10秒)。 理想情况下,我需要一个基于CPU活动和队列中任务的监视器,伪代码如下所示: while check interval has passed if task queue is empty (or workers are not busy) if running instances is greater than 1 scale down 1 instance else if CPU load is higher than threshold scale up […]

芹菜在docker上不起作用

我有问题在docker工人使用芹菜。 我configuration了两个docker容器,web_server和celery_worker。 celery_worker包含rabbitmq-server。 web_server从芹菜工作者调用任务。 我用stream浪汉在VM中configuration了相同的东西。 它工作。 但是docker工人会说出如下的错误信息。 Traceback (most recent call last): File "/web_server/test/test_v1_data_description.py", line 58, in test_create_description headers=self.get_basic_header() ……… ……… File "../task_runner/__init__.py", line 31, in run_describe_task kwargs={}) File "/usr/local/lib/python3.4/dist-packages/celery/app/base.py", line 349, in send_task self.backend.on_task_call(P, task_id) File "/usr/local/lib/python3.4/dist-packages/celery/backends/rpc.py", line 32, in on_task_call maybe_declare(self.binding(producer.channel), retry=True) File "/usr/local/lib/python3.4/dist-packages/kombu/messaging.py", line 194, in _get_channel channel = self._channel = channel() […]

Celery + Redis任务在Docker上不起作用

我试着为我的Django应用程序设置docker,这个应用程序有Celery和Redis(安装程序正常运行,当我尝试正常运行时,没有docker)。 我的docker-compose文件如下所示: version: '2' services: db: image: postgres:latest env_file: docker-compose.env redis: image: redis:latest command: redis-server ports: – "6379:6379" web: build: . command: dockerize -wait tcp://redis:6379 ./docker-web-entrypoint env_file: docker-compose.env volumes: – .:/project-spartan ports: – "8000:8000" links: – db:db – redis:redis worker: build: . env_file: docker-compose.env command: dockerize -wait tcp://redis:6379 ./docker-worker-entrypoint volumes: – .:/project-spartan links: – db:db […]

不同的Docker容器中不同的python应用程序的芹菜任务

我正在阅读Celery的官方文档 DigitalOcean的教程,并运行相当不错的例子 。 但我无法理解我的应用程序如何在Resque Ruby中进行通信。 例如,我有docker容器中的主要python应用程序,必须为其他容器中的其他2个python应用程序生成任务。 在Resque我的应用程序只是听一些队列,并采取任务,然后做一些工作,推回应答。

如何观察使用Django芹菜和Docker预定的任务输出

我已经安装了django的芹菜应用程序,并试图在我的Django应用程序中testing一个简单的定期任务。 我已经使用RabbitMQ作为消息代理,并通过从docker-compose.yml文件传递环境variables来设置broker_url 。 在docker-compose.yml文件中我有以下结构。 version: '3' services: nginx: restart: always image: nginx:latest container_name: NGINX ports: – "8000:8000" volumes: – ./src:/src – ./config/nginx:/etc/nginx/conf.d – /static:/static depends_on: – web web: restart: always build: . container_name: DJANGO command: bash -c "python manage.py makemigrations && python manage.py migrate && gunicorn loop.wsgi -b 0.0.0.0:8000 –reload" depends_on: – db volumes: – […]

不以root身份运行时从容器访问命名卷?

我在Docker Compose下运行Celery。 我想使芹菜的花持久。 所以我这样做: version: '2' volumes: […] flower_data: {} […] flower: image: [base code image] ports: – "5555:5555" volumes: – flower_data:/flower command: celery -A proj flower –port=5555 –persistent=True –db=/flower/flower 但是,那么我得到: IOError: [Errno 13] Permission denied: 'flower.dat' 我跑了以下来解释为什么: bash -c "ls -al /flower; whoami; celery -A proj flower –persistent=True –db=/flower/flower" 这就说明了为什么: flower_1 | drwxr-xr-x 3 […]

解耦和Dockerize Django和芹菜

我想知道什么是最好的方式来解耦芹菜从Django为了dockerize这两个部分,并使用docker群服务 ? 通常,使用引用Django应用程序的命令启动他们的芹菜工人和芹菜: celery worker -A my_app celery beat -A my_app 从这我相信芹菜拿起configuration信息从设置文件和celery.py文件很容易移动到微服务。 我不完全理解的是这些任务如何利用Django ORM? 或者,这不是真正的微服务口头禅和Celery应该devise成GET / POST调用Django REST Framework API来完成任务所需的数据?

泊坞窗。 芹菜和代码在不同的容器中

我想为芹菜工人制作额外的容器。 所以结构应该如下: celery_container – Celery code_container – RabbitMQ, DB, code, everything else 我知道如何组织一个networking,所以芹菜在另一个容器中连接到兔子。 但是我不知道,我应该在两个容器中保存我的代码吗? 我的任务是与芹菜工人同时完成的。 所以,现在我只能看到使用–volume参数运行这两个容器的选项。 喜欢这个: docker run \ -tid \ -v $(pwd):/home \ –name code_container \ code_container docker run \ -tid \ -v $(pwd):/home \ –name celery_container \ celery_container

docker – 撰写和优雅芹菜关机

我一直想知道和寻找这个解决scheme,我没有find任何。 我在一个用docker构build的容器中运行芹菜。 我的容器是这样configuration的: celery: build: . container_name: cl01 env_file: ./config/variables.env entrypoint: – /celery-entrypoint.sh volumes: – ./django:/django depends_on: – web – db – redis stop_grace_period: 1m 我的入口脚本如下所示: #!/bin/sh # Wait for django sleep 10 su -m dockeruser -c "celery -A myapp worker -l INFO" 现在,如果我运行docker-compose stop ,我想有一个温暖(优雅)的关机,给予芹菜提供的1分钟( stop_grace_period )来完成已经开始的任务。 然而, docker-compose stop似乎直接杀死芹菜。 芹菜也应该logging下来,要求它优雅地closures,但是除了突然停止我的任务日志之外,我什么都看不到。 我做错了什么,或者我需要改变什么才能使芹菜优雅地closures? 编辑:下面提供的关于提供–timeout docker-compose […]