2016-11-28 18 views
3

セロリを学んでいて、設定をテストするプロジェクトを作成しました。私はcelery==4.0.0django-celery-beat==1.0.1をインストールしました。 drf_projectでセロリの定期的なタスクが実行されていません

(manage.pyメインプロジェクトディレクトリ)が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/INITで

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/celery.py .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 /)iをセロリの労働者と異なる端末での私のDjangoプロジェクトdevのサーバーを実行したとき、私は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')) 

を追加しました:

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

調べるまでに数日かかりました。ビートは任務が成立したときに仕事を送るだけです。これらのタスクはキューに入れられています。だから、少なくとも1人の作業者を起用して、それらの作業を選んで実行する必要があります。 –

+0

@DatTTチップのおかげで。 –

関連する問題