2017-05-15 15 views
2

私はDjangoアプリケーション内で定期的なタスクを作成しようとしています。なぜセロリ周期的タスクは機能しませんか?

私は私のsettings.pyにこれを追加しました:

from datetime import timedelta 

CELERYBEAT_SCHEDULE = { 
    'get_checkins': { 
     'task': 'api.tasks.get_checkins', 
     'schedule': timedelta(seconds=1) 
    } 
} 

を私はセロリを使い始めることだし、私が使用したいブローカー考え出したので、私はこれを追加しただけでなくちょうどブローカーをバイパスしていません当面:

from __future__ import absolute_import, unicode_literals 
import os 
from celery import Celery 

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'testproject.settings') 
app = Celery('testproject') 
app.config_from_object('django.conf:settings', namespace='CELERY') 
app.autodiscover_tasks() 

if DEBUG: 
    CELERY_ALWAYS_EAGER = True 

は、私も自分のプロジェクトフォルダ内celery.pyファイルを作成しました私は労働者を実行し、それがうまく起動し、私はタスクが[tasks]の下に登録されて見ることができますcelery -A testproject worker --beat -l info

で破ってる

from celery import shared_task 

@shared_task 
def get_checkins(): 
    print('hello from get checkins') 

apiと呼ばれる私のアプリ、インサイド

は、私がtasks.pyファイルを作りましたしかし、私は記録されている仕事はありません。毎秒1でなければなりません。なぜこれが実行されていないのか誰にも伝えられますか?

+0

はあなただけ ' 'スケジュール' を試してみましたがいる:1.0'? –

+0

これもうまくいくが、それまでのところ問題は解決していない。 – Rob

答えて

1

あなたの投稿を見ましたが、セロリーと一緒に使用しているブローカーにコメントは表示されません。 Rabbitmqのようなブローカーをインストールしましたか?実行中かログに何らかのエラーが記録されていますか? セロリーでは、データの送受信にブローカーが必要です。

ここ(http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#choosing-a-broker)のマニュアルを参照してください

+1

私は現時点でブローカーを使用していないと言及して忘れました。私は 'CELERY_ALWAYS_EAGER = True'と同期して動作しています。明らかに私は生産で1つを使用します。 – Rob

+0

これはブローカーの問題ではありません。実稼働環境に導入する前にテストすることを強くお勧めします。セロリは何かエラーやメッセージを記録していますか? –

+0

エラーはありません。実際に何もしていません。 – Rob

関連する問題