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

1 回答 1

4

我不确定我是否完全理解您的要求,但据我所知,您的问题可能是以下问题之一:

1) 你在运行 celeryd (worker daemon) 吗?如果没有,您是否在码头开始了芹菜工人?Celery beat 是一个任务调度器。它不是工人。Celerybeat 只安排任务(即将它们放入队列中供工作人员最终使用)。

2)您打算如何查看结果?他们是在某个地方得救了吗?由于您已将结果后端设置为 redis,因此结果至少暂时存储在redis 结果后端中

于 2012-08-29T20:22:34.413 回答