2012-08-28 80 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脚本中使用命令来获得 –