如何观察使用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: - ./src:/src - /static:/static expose: - "8000" links: - db - rabbit db: restart: always image: postgres:latest container_name: PSQL rabbit: hostname: rabbit image: rabbitmq:latest ports: # We forward this port for debugging purposes. - "5672:5672" # Here, we can access the rabbitmq management plugin. - "15672:15672" environment: - RABBITMQ_DEFAULT_USER=admin - RABBITMQ_DEFAULT_PASS=mypass # Celery worker worker: build: . command: bash -c "python manage.py celery worker -B --concurrency=1" volumes: - .:/src links: - db - rabbit depends_on: - rabbit 

为了testing目的,我在settings.py中创build了一个计划任务,如下所示:(调度10秒)

 CELERYBEAT_SCHEDULE = { 'schedule-task': { 'task': 'myapp.tasks.test_print', 'schedule': 10, # in seconds }, } 

和myapp中的tasts.py文件有以下代码:

 # -*- coding: utf-8 -*- from celery.task import task @task(ignore_result=True, max_retries=1, default_retry_delay=10) def test_print(): print ("Print from celery task") 

当我运行命令: docker-compose run web python manage.py celery worker -B --concurrency=1 test_print被执行,输出被打印。

但是当我运行docker-compose up --build ,打印下面的输出。 但是,任务test_print没有执行?

 rabbit_1 | =INFO REPORT==== 15-Jun-2017::13:05:30 === rabbit_1 | accepting AMQP connection <0.354.0> (172.18.0.7:51400 -> 172.18.0.3:5672) rabbit_1 | =INFO REPORT==== 15-Jun-2017::12:54:25 === rabbit_1 | connection <0.421.0> (172.18.0.6:52052 -> 172.18.0.3:5672): user 'admin' authenticated and granted access to vhost '/' 

我是docker工人。 任何指导将是非常有帮助的。