Tag: 芹菜

在一个docker群中的芹菜工人或牧场牛

我有一个devise问题。 我在几个主机上使用docker化的芹菜工人。 我只在每个主机上运行芹菜容器的一个实例,但使用默认的celery默认工人设置,默认为该主机上的核心数量。 我没有设置docker集装箱的限制。 我使用牧场主来部署到使用牛环境的主机,但是我想我的问题同样适用于像swarm这样的任何docker集群。 由于芹菜的工作方式,我没有使用多个容器来使用扩展function – 一个容器已经能够通过拥有多个工人来利用核心。 问题是:主机上有更多的工人容器对我有好处吗? 如果是这样的话,我是否需要限制每个芹菜工人在每个容器中只有一个,让这个集群能够扩展多个容器? 我可以想象的唯一好处是从高可用性的angular度来看,如果芹菜工人死在主机上就不见了,但是如果我有更多的容器可以接pipe工作,但是我认为芹菜可以通过重新生产来做同样的事情也是工人。 我错过了什么吗?

芹菜+ rabbitmq在Docker上

我试图按照这个教程如何在10分钟内用芹菜和RabbitMQbuild立docker集群 。 跟着教程,虽然我改变了以下文件。 我docker-compose.yml文件如下所示: version: '2' services: rabbit: hostname: rabbit image: rabbitmq environment: – RABBITMQ_DEFAULT_USER=user – RABBITMQ_DEFAULT_PASS=pass – HOSTNAME=rabbitmq – RABBITMQ_NODENAME=rabbitmq ports: – "5672:5672" # we forward this port because it's useful for debugging – "15672:15672" # here, we can access rabbitmq management plugin worker: build: context: . dockerfile: Dockerfile volumes: – .:/app links: – […]

在寻找已经删除的任务的docker工人的Django芹菜

我已经为django设置了我的celery应用程序,并且使用docker来运行它。 我曾经运行下面的CELERYBEAT_SCHEDULE代码 # define scheduled tasks here CELERYBEAT_SCHEDULE = { 'test-scheduler': { 'task': 'users.tasks.test_print', 'schedule': 10, # in seconds, or timedelta(seconds=10) }, } 而且,它工作正常。 后来,我改变了我的任务的名称,如下所示: # define scheduled tasks here CELERYBEAT_SCHEDULE = { 'handle-email': { 'task': 'users.tasks.handle_email_task', 'schedule': 10, # in seconds, or timedelta(seconds=10) }, } 但是,当我运行docker-compose up –build ,出现以下错误。 worker_1 | 2017-06-16T15:17:22.844376379Z KeyError: 'users.tasks.test_print' […]

Docker / Django / Celery / RabbitMQ执行已删除代码的旧版本

我正在docker中运行我的Django应用程序。 我正在使用一个后台作业以及与Celery + RabbitMQ的定期工作,在主应用程序的独立容器中运行。 一切工作与“heroku本地”本地。 在Digital Ocean的Ubuntu实例上运行我的应用程序时,我注意到后台任务和定期任务正在执行我的代码的旧版本。 具体来说,我上个星期从我的Django模型中删除了一个字段,旧的代码引用了这个删除的字段,所以发生错误。 但是,我的新代码不再提及缺less的字段。 以下是我尝试的一些事情: 重build和重新启动泊坞窗(没有工作) 删除所有的.pyc文件(没有工作) 清除所有的芹菜任务(没有工作) 重新启动我的数字海洋实例(没有工作) 将我所有的代码和docker环境转移到全新的数字海洋实例。 (这工作!) 我现在已经遇到了两次这样的问题,而且我希望find一个比每次发生这个错误时都要换一台新机器更好的解决scheme。 我猜测,芹菜或RabbitMQcaching了旧的代码,我不知道的地方。 提前致谢! 与此相关,但没有解决scheme为我工作: Celery / Rabbitmq / Django – 旧任务正在执行,而不被称为我的代码

如何在Docker Compose中设置`celeryd`和`celerybeat`?

我有一个更新每分钟的任务。 这是我的Django应用程序的Dockerfile。 FROM python:3-onbuild COPY ./ / EXPOSE 8000 RUN pip3 install -r requirements.txt RUN python3 manage.py collectstatic –noinput ENTRYPOINT ["python3", "manage.py", "celeryd"] ENTRYPOINT ["python3", "manage.py", "celerybeat"] ENTRYPOINT ["/app/start.sh"] 这是我的docker-compose.yml。 version: "3" services: nginx: image: nginx:latest container_name: nginx_airport ports: – "8080:8080" volumes: – ./:/app – ./nginx:/etc/nginx/conf.d – ./static:/app/static depends_on: – web rabbit: hostname: rabbit_airport image: […]

在我的Dockered Django应用程序中,我的Celery任务不会更新SQLite数据库(在其他容器中)。 我该怎么办?

这是我的docker-compose.yml。 version: "3" services: nginx: image: nginx:latest container_name: nginx_airport ports: – "8080:8080" volumes: – ./:/app – ./docker_nginx:/etc/nginx/conf.d – ./timezone:/etc/timezone depends_on: – web rabbit: image: rabbitmq:latest environment: – RABBITMQ_DEFAULT_USER=admin – RABBITMQ_DEFAULT_PASS=asdasdasd ports: – "5672:5672" – "15672:15672" web: build: context: . dockerfile: Dockerfile command: /app/start_web.sh container_name: django_airport volumes: – ./:/app – ./timezone:/etc/timezone expose: – "8080" depends_on: – […]

无法将Celery服务器连接到本地主机上的RabbitMQ

我使用Celery和RabbitMQ作为消息队列,每个封装在它自己的Docker镜像中。 当它们在Docker中使用–link参数连接时,一切正常。 我已经有这个设置工作一段时间了。 我想将它们分开,以便它们在不同的主机上运行,​​所以我不能再使用–link参数。 我越来越gaierror: [Errno -2] Name or service not known当我尝试连接使用AMQP,不明白为什么。 服务器只是使用rabbitmq上的rabbitmq容器: docker run –rm –name=qrabbit -p 5672:5672 rabbitmq 我可以成功地telnet到这个: $ telnet 192.168.99.100 5672 Trying 192.168.99.100… Connected to 192.168.99.100. Escape character is '^]'. abc ^D AMQP Connection closed by foreign host. $ …所以我知道服务器正在运行。 我的客户看起来像这样: import os from logging import getLogger, StreamHandler, DEBUG from serverlib […]

在docker集装箱中优雅地停止芹菜

我有一个芹菜运行在一个docker容器中处理来自rabbitmq的任务。 我试图停止并删除芹菜容器,同时允许当前正在运行的任务完成。 文档build议发送TERM或INT信号到主进程应该加热关机芹菜,虽然我发现subprocess刚被杀死。 当我发送TERM正在运行的进程: WorkerLostError('Worker exited prematurely: signal 15 (SIGTERM).',) 当我发送INT时,正在运行的进程只是退出,没有错误,尽pipe它也不允许按照文档提示完成任务。 我使用以下命令启动su -m celery_user -c "python manage.py celery worker -Q queue-name"容器: su -m celery_user -c "python manage.py celery worker -Q queue-name" 任何想法为什么这可能会发生? 信号是否终止了容器以及芹菜过程? 我发送的信号是: docker kill –signal="TERM" containerid或docker kill –signal="TERM" containerid docker exec containerid kill -15 1

Flush Flower数据库偶尔和/或从Docker优雅退出?

我在Docker中运行芹菜花(查看这个问题的细节)。 该命令最终是: celery -A proj flower –persistent=True –db=/flower/flower 我有一个持续的音量设置/flower 。 但是,看起来像Flower从不会将任何内容写入数据库文件,即使正常运行时间超过30分钟(在此期间处理大约120个任务): -rw-r–r– 1 user user 0 Mar 11 00:08 flower.bak -rw-r–r– 1 user user 0 Mar 10 23:29 flower.dat -rw-r–r– 1 user user 0 Mar 11 00:08 flower.dir 正常地停止Docker容器不起作用,所以Docker强行杀死了它,这意味着没有任何事情会被写入数据库,所以就像没有任何东西被持久化一样。 有没有办法让花偶尔刷新它的数据库,或者,更好的是,优雅地退出?

socket.error:超时(在Docker容器中运行的Celery&RabbitMQ)

试图提出芹菜 (与RabbitMQ )官方docker集装箱。 docker run -d –hostname my-rabbit –name some-rabbit rabbitmq docker run –link some-rabbit:rabbit –name some-celery -d celery 我已经检查了日志,以确保一切正常。 # docker logs some-celery [2016-10-20 11:05:50,357: WARNING/MainProcess] /usr/local/lib/python3.5/site-packages/celery/apps/worker.py:161: CDeprecationWarning: Starting from version 3.2 Celery will refuse to accept pickle by default. The pickle serializer is a security concern as it may give attackers the ability […]