2017-09-26 176 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