和官网的示例类似,我想要每隔20秒循环一次add(1,2),add(2,3) 和 add(3,4)这三个任务,代码改如何更改?
proj/__init__.py /celeryapp.py /tasks.py
celeryapp.py
from celery import Celery from datetime import timedelta add = [(1,2),(2,3), (3,4)] celeryapp = Celery('proj', backend='amqp://', broker='amqp://', include=['proj.tasks']) celeryapp.conf.update( CELERY_TASK_RESULT_EXPIRES=3600, CELERY_ROUTES = { 'proj.tasks.add': {'queue': 'hipri'}, }, CELERYBEAT_SCHEDULE = { "add": { "task": "proj.tasks.add", "schedule": timedelta(seconds=20), "args": add }, }, ) if __name__ == '__main__': celeryapp.start()
tasks.py
from __future__ import absolute_import from proj.celeryapp import celeryapp from celery import group @celeryapp.task def add(x, y): return x + y
celeryapp.conf.update(
CELERY_TASK_RESULT_EXPIRES=3600, CELERY_ROUTES = { 'proj.tasks.add': {'queue': 'hipri'}, }, CELERYBEAT_SCHEDULE = { "add": { "task": "proj.tasks.add", "schedule": timedelta(seconds=20), "args": add[0] }, "add": { "task": "proj.tasks.add", "schedule": timedelta(seconds=20), "args": add[1] }, "add": { "task": "proj.tasks.add", "schedule": timedelta(seconds=20), "args": add[2] }, }, )