2016-11-27 5 views
0

私が知っているように、Celery 3.1デコレータ@periodic_taskは使用できません。Celery 4.0での定期的な作業

セロリーdocsからサンプルを実行しようとしていて、何が間違っているのかわかりません。

私はtask_planner.pyに次のコードを持っている:

from celery import Celery 
from kombu import Queue, Exchange 



class Config(object): 
    CELERY_QUEUES = (
     Queue(
      'try', 
      exchange=Exchange('try'), 
      routing_key='try', 
     ), 
    ) 
celery = Celery('tasks', 
       backend='redis://', 
       broker='redis://localhost:6379/0') 
celery.config_from_object(Config) 


celery.conf.beat_schedule = { 
    'planner': { 
     'task': 'some_task', 
     'schedule': 5.0, 
    }, 
} 


@celery.task(queue='try') 
def some_task(): 
    print('Hooray') 

そして、私が実行:celery -A task_planner worker -l info -Bを、私は次を受け取る:[2016-11-27 19:06:56,119: INFO/Beat] Scheduler: Sending due task planner (some_task)ごとに5秒。

しかし、私は出力 'Hooray'を期待しています。

私は何が欠けていますか?

答えて

4

解決策を見つけました。 は私が仕事していた:

@celery.task(queue='try') 
def some_task(): 
    print('Hooray') 

私はそれが名前だ印刷:

print(some_task) 

は以下のガット:

<@task: task_planner.some_task of tasks:0x7fceaaf5b9e8> 

だから、僕はここにsome_taskからtask_planner.some_taskにタスクの名前を変更しました:

celery.conf.beat_schedule = { 
    'planner': { 
     'task': 'task_planner.some_task', 
     'schedule': 5.0, 
    }, 
} 

それがうまくいった!

[2016-11-29 10:09:57,697: WARNING/PoolWorker-3] Hooray 

注意。結果を確認するには、結果を確認するために、作業者(ビートと同じモジュール内のタスクの場合)とログレベル '情報'でビートを実行する必要があります。

celery -A task_planner worker -B -l info 
関連する問題