2017-09-26 116 views
0

我跟着instruction process to installing and setting up celery,现在我正在尝试执行我的任务。我的项目树是这个样子:芹菜任务不会执行

bin 
draft1-- 
     | 
     -------draft1 ---- 
          | 
          --------celery.py 
          --------tasks.py 
          --------views.py 
     -------manage.py 
     -------templates 

include 
lib 

这里是我的代码:

settings.py

CELERY_BROKER_URL = 'amqp://guest:[email protected]:5672//' 

celery.py

import os 
from celery import Celery 

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings') 

app = Celery('app') 
app.config_from_object('django.conf:settings', namespace='CELERY') 
app.autodiscover_tasks() 

tasks.py

from celery import shared_task 

@shared_task 
def print_this(): 
    print('ONE MINUTE') 

app.views

print_this.delay() 

所以我芹菜功能不起作用,它不执行打印语句。我想要做的是每分钟执行一次该功能。任何想法是什么问题?

回答

0

我认为在开始实验之前您需要阅读更多内容。 Celery是一个分布式任务队列,它基本上意味着它轮询队列以查看是否有任何需要运行的任务。如果有,它将运行该任务。

关于您的设置,您似乎有一个任务运行程序,但不是运行程序需要轮询以检查是否有任何要运行的任务的队列。配置CELERY_BROKER_URL就是关于那个队列。我建议你从阅读"Celery's Introduction documents"开始。特别是"What do I need?"的一部分。

备注FOR之后你找出排队工件

而且,我不知道你运行并为您的Django应用程序怎么做,但芹菜需要单独的进程。对于那部分你需要浏览"First Steps with Celery"

+0

我已经阅读了所有内容,我不确定有什么需要“弄清楚”队列部分?我在django的本地服务器上运行我的应用程序,所以'CELERY_BROKER_URL'应该和我在说明中一样。我试过'./ bin/celery -A draft1 worker -l info'在我的项目根目录(其中manage.py是),它返回了这个错误:'AttributeError:module'draft1'没有任何属性'app''''期间处理上述异常,发生另一个异常:''AttributeError:module'draft1'没有属性'芹菜''任何想法这可能意味着什么? ('draft1是我的应用程序名称') – Zorgan

+0

您是否设置了队列服务器?像rabbitmq? –

+0

是的,我的django服务器和rabbitmq都在运行。 – Zorgan