2016-06-23 61 views
1

私はdjango + celeryを使って定期的な作業をしています。私のプロジェクトにはdjango-celery == 3.1.17があり、使用されているブローカはRedisであり、動作しています。Django + Celery - 定期的なタスクが実行されない理由

は私の設定ファイルで:

CELERYBEAT_SCHEDULE={ 
    'delivery_send': { 
     'task': 'delivery.tasks.DeliverySendTask', 
     'schedule': timedelta(minutes=1), 
     'args': [], 
    }, 
} 

CELERY_ROUTES = { 
    'delivery.tasks.DeliverySendTask': { 
     'queue': 'periodic_tasks', 
     'routing_key': 'periodic_tasks' 
    }, 
} 

よりセロリの設定がありますが、私はこの二つはこの質問に最も関連していると思います。

タスク:

class DeliverySendTask(Task): 
    def run(self, *args, **kwargs): 
     logger.info('executing task!')  
     from .models import Dispatch 
     Dispatch.objects.all().delete() 

その後、私はpython manage.py celery beatを実行すると、コンソール

[2016-06-23 14:32:01,230: INFO/MainProcess] Scheduler: Sending due task delivery_send (delivery.tasks.DeliverySendTask) 

しかし、削除で参照が実際に実行されることはありません。私は何が欠けていますか?

ありがとうございました。

+0

あなたはセロリの作業者 'python manage.py celery worker -l info'を実行していますか? – ravigadila

+0

@RaviKumarタスクが実行されました。私が行方不明だったことは、労働者を正しく開始させることでしたか? –

答えて

6

セロリビートはタスクを実行しません。キューにタスクをスケジュールするだけです。 celery workerはタスクを実行します。

タスクを定期的に実行するには、celery beatcelery workerの両方を開始する必要があります。

python manage.py celery beat 
python manage.py celery worker 
+0

この回答は私の問題を解決しました、ありがとう! –

+0

これは 'python manage.py celery worker -A helloapp --beat'と似ています –

関連する問題