2016-11-28 166 views
3

我在學習芹菜,我創建了一個項目來測試我的配置。根據最新文檔,我安裝了celery==4.0.0django-celery-beat==1.0.1芹菜定期任務不執行

在drf_project(主項目目錄與manage.py)/drf_project/celery.py

from __future__ import absolute_import, unicode_literals 
from celery import Celery 
import os 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'drf_project.settings') 
app = Celery('drf_project') 
app.config_from_object('django.conf:settings', namespace='CELERY') 
app.autodiscover_tasks() 

在drf_project/drf_project/settings.py

INSTALLED_APPS += ('django_celery_beat',) 
CELERYBEAT_SCHEDULE = { 
    "test_1": { 
     "task": "tasks.print_test", 
     "schedule": timedelta(seconds=2), 
    }, 
} 

在drf_project/drf_project/初始化 .py

from __future__ import absolute_import, unicode_literals 
from .celery import app as celery_app 

__all__ = ['celery_app'] 

在我的user_manageme NT的應用程序(drf_project/user_mangement /)我加了一個tasks.py

from celery import Celery 
from time import strftime 

app = Celery() 

@app.task 
def print_test(): 
    print strftime('%Y-%m-%d %H:%M:%S') 
    with open('abc.txt', 'ab+') as test_file: 
     test_file.writeline(strftime('%Y-%m-%d %H:%M:%S')) 

當我運行芹菜工作人員,並通過在不同的終端我的Django項目開發服務器:

celery -A drf_project worker -l info 

python manage.py runserver 

我可以看到我的任務芹菜日誌,如:

[tasks] 
    . user_management.tasks.print_test 

但它沒有執行。此外,我沒有得到任何錯誤。所以我做錯了什麼?我跟着芹菜的官方文檔。

回答

5

對於運行具有運行芹菜週期性任務擊敗,而不是芹菜工人。

您可以在此頁面的末尾找到更多的信息: http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

+0

我用'芹菜-A drf_project beat'開始節拍服務。但仍然沒有執行任務,我無法在django服務器和芹菜的任何地方看到某種日誌。 –

+2

花了我幾天的時間才知道。節拍只是在他們到期時發送任務。那些任務在那裏排隊。所以,你必須至少啓動一名工作人員,以便這些任務被挑選並執行! –

+0

@DatTT感謝您的提示。 –