2012-08-28 83 views
1

嘿傢伙我是新來的芹菜。我正在進行週期性任務調度。我已經配置我celeryconfig.py如下:我怎樣才能得到定期​​任務調度的結果

from datetime import timedelta 

BROKER_URL = 'redis://localhost:6379/0' 
CELERY_RESULT_BACKEND = "redis" 
CELERY_REDIS_HOST = "localhost" 
CELERY_REDIS_PORT = 6379 
CELERY_REDIS_DB = 0 
CELERY_IMPORTS=("mytasks") 
CELERYBEAT_SCHEDULE={'runs-every-60-seconds' : 
         { 
           'task': 'mytasks.add', 
           'schedule': timedelta(seconds=60), 
           'args':(16,16) 
         }, 
        } 

mytask.py如下:

from celery import Celery 

celery = Celery("tasks", 
       broker='redis://localhost:6379/0', 
       backend='redis') 


@celery.task 
def add(x,y): 
     return x+y 

@celery.task 
def mul(x,y): 
     return x*y 

當我運行 celery beat -s celerybeat-schedule然後我得到

Configuration -> . broker -> redis://localhost:6379/0 . loader -> celery.loaders.default.Loader . scheduler -> celery.beat.PersistentScheduler . db -> celerybeat-schedule . logfile -> [stderr]@INFO . maxinterval -> now (0s) [2012-08-28 12:27:17,825: INFO/MainProcess] Celerybeat: Starting... [2012-08-28 12:28:00,041: INFO/MainProcess] Scheduler: Sending due task mytasks.add [2012-08-28 12:29:00,057: INFO/MainProcess] Scheduler: Sending due task mytasks.add [2012-08-28 12:30:00,064: INFO/MainProcess] Scheduler: Sending due task mytasks.add [2012-08-28 12:31:00,097: INFO/MainProcess] Scheduler: Sending due task mytasks.add

現在我不得到我已經通過論據(16,16)然後我怎麼能得到一個此功能add(x,y)

回答

4

的swer我不知道我很明白你問什麼,但我可以告訴,您的問題可能是下列之一:

1)是否運行celeryd(中工人守護進程)?如果沒有,你是否在碼頭開始了一名芹菜工人?芹菜節拍是task scheduler。它不是worker。 Celerybeat只調度任務(即將它們放入隊列中供工人最終消耗)。

2)您是如何計劃查看結果的?他們是否被保存在某個地方?由於您已將結果設置爲後端到redis,因此結果至少暫時存儲在thnx中的redis results backend

+0

thnx中。我只是想打印結果。並通過在我的python腳本中使用命令來獲得 –